1
2 // Test library configuration for libcurl.cfg
3 //
4 // Usage:
5 // $ cppcheck --check-library --library=libcurl --enable=information --error-exitcode=1 --inline-suppr --suppress=missingIncludeSystem test/cfg/libcurl.c
6 // =>
7 // No warnings about bad library configuration, unmatched suppressions, etc. exitcode=0
8 //
9
10 #include <curl/curl.h>
11 #include <stdio.h>
12
validCode()13 void validCode()
14 {
15 CURL *curl = curl_easy_init();
16 if (curl) {
17 CURLcode res;
18 curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
19 res = curl_easy_perform(curl);
20 if (res != CURLE_OK) {
21 printf("error");
22 } else {
23 long response_code;
24 curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
25 printf("%ld", response_code);
26 char * pStr = curl_easy_escape(curl, "a", 1);
27 if (pStr)
28 printf("%s", pStr);
29 curl_free(pStr);
30 curl_easy_reset(curl);
31 }
32 curl_easy_cleanup(curl);
33 }
34 }
35
ignoredReturnValue(CURL * handle)36 void ignoredReturnValue(CURL * handle)
37 {
38 // cppcheck-suppress ignoredReturnValue
39 curl_easy_strerror(1);
40 }
41
resourceLeak_curl_easy_init()42 void resourceLeak_curl_easy_init()
43 {
44 CURL *curl = curl_easy_init();
45 printf("%p", curl);
46 // cppcheck-suppress resourceLeak
47 }
48
resourceLeak_curl_easy_duphandle(CURL * handle)49 void resourceLeak_curl_easy_duphandle(CURL * handle)
50 {
51 CURL *curl = curl_easy_duphandle(handle);
52 printf("%p", curl);
53 // cppcheck-suppress resourceLeak
54 }
55
memleak_curl_easy_escape(CURL * handle)56 void memleak_curl_easy_escape(CURL * handle)
57 {
58 char * pStr = curl_easy_escape(handle, "a", 1);
59 if (pStr)
60 printf("%s", pStr);
61 // cppcheck-suppress memleak
62 }
63
nullPointer(CURL * handle)64 void nullPointer(CURL * handle)
65 {
66 char * buf[10] = {0};
67 size_t len;
68
69 curl_easy_recv(handle, buf, 10, &len);
70 // cppcheck-suppress nullPointer
71 curl_easy_recv(handle, buf, 10, NULL);
72 curl_easy_send(handle, buf, 10, &len);
73 // cppcheck-suppress nullPointer
74 curl_easy_send(handle, buf, 10, NULL);
75 }
76
uninitvar(CURL * handle)77 void uninitvar(CURL * handle)
78 {
79 char * bufInit[10] = {0};
80 char * bufUninit;
81 size_t len;
82
83 curl_easy_send(handle, bufInit, 10, &len);
84 // cppcheck-suppress uninitvar
85 curl_easy_send(handle, bufUninit, 10, &len);
86 }
87