1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
--- libcmis/src/libcmis/http-session.cxx.orig 2024-06-19 18:04:14.198691623 +0200
+++ libcmis/src/libcmis/http-session.cxx 2024-06-19 18:09:08.853234764 +0200
@@ -670,16 +670,17 @@
curl_easy_setopt( m_curlHandle, CURLOPT_URL, url.c_str() );
// Set the headers
- struct curl_slist *headers_slist = NULL;
+ struct deleter { void operator()(curl_slist* p) const { curl_slist_free_all(p); } };
+ unique_ptr<struct curl_slist, deleter> headers_slist;
for ( vector< string >::iterator it = headers.begin( ); it != headers.end( ); ++it )
- headers_slist = curl_slist_append( headers_slist, it->c_str( ) );
+ headers_slist.reset(curl_slist_append(headers_slist.release(), it->c_str()));
// If we are using OAuth2, then add the proper header with token to authenticate
// Otherwise, just set the credentials normally using in libcurl options
if ( m_oauth2Handler != NULL && !m_oauth2Handler->getHttpHeader( ).empty() )
{
- headers_slist = curl_slist_append( headers_slist,
- m_oauth2Handler->getHttpHeader( ).c_str( ) );
+ headers_slist.reset(curl_slist_append(headers_slist.release(),
+ m_oauth2Handler->getHttpHeader().c_str()));
}
else if ( !getUsername().empty() )
{
@@ -693,7 +693,7 @@
#endif
}
- curl_easy_setopt( m_curlHandle, CURLOPT_HTTPHEADER, headers_slist );
+ curl_easy_setopt(m_curlHandle, CURLOPT_HTTPHEADER, headers_slist.get());
// Set the proxy configuration if any
if ( !libcmis::SessionFactory::getProxy( ).empty() )
@@ -747,9 +747,6 @@
// Perform the query
CURLcode errCode = curl_easy_perform( m_curlHandle );
- // Free the headers list
- curl_slist_free_all( headers_slist );
-
// Process the response
bool isHttpError = errCode == CURLE_HTTP_RETURNED_ERROR;
if ( CURLE_OK != errCode && !( m_noHttpErrors && isHttpError ) )
--- libcmis/src/libcmis/sharepoint-session.cxx.orig 2024-06-19 18:04:35.761804551 +0200
+++ libcmis/src/libcmis/sharepoint-session.cxx 2024-06-19 18:08:44.563107553 +0200
@@ -200,12 +200,13 @@
curl_easy_setopt( m_curlHandle, CURLOPT_URL, url.c_str() );
// Set the headers
- struct curl_slist *headers_slist = NULL;
+ struct deleter { void operator()(curl_slist* p) const { curl_slist_free_all(p); } };
+ unique_ptr<struct curl_slist, deleter> headers_slist;
for ( vector< string >::iterator it = headers.begin( ); it != headers.end( ); ++it )
- headers_slist = curl_slist_append( headers_slist, it->c_str( ) );
+ headers_slist.reset(curl_slist_append(headers_slist.release(), it->c_str()));
- headers_slist = curl_slist_append( headers_slist, "accept:application/json; odata=verbose" );
- headers_slist = curl_slist_append( headers_slist, ( "x-requestdigest:" + m_digestCode ).c_str( ) );
+ headers_slist.reset(curl_slist_append(headers_slist.release(), "accept:application/json; odata=verbose"));
+ headers_slist.reset(curl_slist_append(headers_slist.release(), ("x-requestdigest:" + m_digestCode).c_str()));
if ( !getUsername().empty() && !getPassword().empty() )
{
@@ -220,7 +219,7 @@
#endif
}
- curl_easy_setopt( m_curlHandle, CURLOPT_HTTPHEADER, headers_slist );
+ curl_easy_setopt(m_curlHandle, CURLOPT_HTTPHEADER, headers_slist.get());
// Set the proxy configuration if any
if ( !libcmis::SessionFactory::getProxy( ).empty() )
@@ -274,9 +273,6 @@
// Perform the query
CURLcode errCode = curl_easy_perform( m_curlHandle );
- // Free the headers list
- curl_slist_free_all( headers_slist );
-
// Process the response
bool isHttpError = errCode == CURLE_HTTP_RETURNED_ERROR;
if ( CURLE_OK != errCode && !( m_noHttpErrors && isHttpError ) )
|