From cad9c3f55fad5da988144dc83ad76a8544a071a2 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Fri, 5 Feb 2010 18:07:19 +0000 Subject: Addes OOM handling for curl_easy_setopt() calls in test --- tests/libtest/lib568.c | 100 +++++++++++++++++++++++++++++++------------------ 1 file changed, 64 insertions(+), 36 deletions(-) (limited to 'tests/libtest/lib568.c') diff --git a/tests/libtest/lib568.c b/tests/libtest/lib568.c index c9406b0ec..0e7e3fea4 100644 --- a/tests/libtest/lib568.c +++ b/tests/libtest/lib568.c @@ -35,9 +35,9 @@ int test(char *URL) CURLcode res; CURL *curl; int sdp; - FILE *sdpf; + FILE *sdpf = NULL; struct_stat file_info; - char *stream_uri; + char *stream_uri = NULL; int request=1; struct curl_slist *custom_headers=NULL; @@ -52,14 +52,18 @@ int test(char *URL) return TEST_ERR_MAJOR_BAD; } - curl_easy_setopt(curl, CURLOPT_HEADERDATA, stdout); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout); + test_setopt(curl, CURLOPT_HEADERDATA, stdout); + test_setopt(curl, CURLOPT_WRITEDATA, stdout); - curl_easy_setopt(curl, CURLOPT_URL, URL); + test_setopt(curl, CURLOPT_URL, URL); - stream_uri = suburl(URL, request++); - curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI,stream_uri); + if((stream_uri = suburl(URL, request++)) == NULL) { + res = TEST_ERR_MAJOR_BAD; + goto test_cleanup; + } + test_setopt(curl, CURLOPT_RTSP_STREAM_URI, stream_uri); free(stream_uri); + stream_uri = NULL; sdp = open("log/file568.txt", O_RDONLY); fstat(sdp, &file_info); @@ -68,65 +72,89 @@ int test(char *URL) sdpf = fopen("log/file568.txt", "rb"); if(sdpf == NULL) { fprintf(stderr, "can't open log/file568.txt\n"); - return TEST_ERR_MAJOR_BAD; + res = TEST_ERR_MAJOR_BAD; + goto test_cleanup; } - curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_ANNOUNCE); + test_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_ANNOUNCE); - curl_easy_setopt(curl, CURLOPT_READDATA, sdpf); - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t) file_info.st_size); + test_setopt(curl, CURLOPT_READDATA, sdpf); + test_setopt(curl, CURLOPT_UPLOAD, 1L); + test_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t) file_info.st_size); /* Do the ANNOUNCE */ res = curl_easy_perform(curl); - if(res) { - fclose(sdpf); - return res; - } + if(res) + goto test_cleanup; - curl_easy_setopt(curl, CURLOPT_UPLOAD, 0L); + test_setopt(curl, CURLOPT_UPLOAD, 0L); fclose(sdpf); + sdpf = NULL; /* Make sure we can do a normal request now */ - stream_uri = suburl(URL, request++); - curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI,stream_uri); + if((stream_uri = suburl(URL, request++)) == NULL) { + res = TEST_ERR_MAJOR_BAD; + goto test_cleanup; + } + test_setopt(curl, CURLOPT_RTSP_STREAM_URI, stream_uri); free(stream_uri); + stream_uri = NULL; - curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_DESCRIBE); + test_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_DESCRIBE); res = curl_easy_perform(curl); if(res) - return res; + goto test_cleanup; /* Now do a POST style one */ - stream_uri = suburl(URL, request++); - curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI,stream_uri); + if((stream_uri = suburl(URL, request++)) == NULL) { + res = TEST_ERR_MAJOR_BAD; + goto test_cleanup; + } + test_setopt(curl, CURLOPT_RTSP_STREAM_URI, stream_uri); free(stream_uri); + stream_uri = NULL; custom_headers = curl_slist_append(custom_headers, "Content-Type: posty goodness"); - - curl_easy_setopt(curl, CURLOPT_RTSPHEADER, custom_headers); - curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_ANNOUNCE); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, - "postyfield=postystuff&project=curl\n"); + if(!custom_headers) { + res = TEST_ERR_MAJOR_BAD; + goto test_cleanup; + } + test_setopt(curl, CURLOPT_RTSPHEADER, custom_headers); + test_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_ANNOUNCE); + test_setopt(curl, CURLOPT_POSTFIELDS, "postyfield=postystuff&project=curl\n"); res = curl_easy_perform(curl); if(res) - return res; + goto test_cleanup; - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, NULL); - curl_easy_setopt(curl, CURLOPT_RTSPHEADER, NULL); + test_setopt(curl, CURLOPT_POSTFIELDS, NULL); + test_setopt(curl, CURLOPT_RTSPHEADER, NULL); curl_slist_free_all(custom_headers); + custom_headers = NULL; /* Make sure we can do a normal request now */ - stream_uri = suburl(URL, request++); - curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI,stream_uri); + if((stream_uri = suburl(URL, request++)) == NULL) { + res = TEST_ERR_MAJOR_BAD; + goto test_cleanup; + } + test_setopt(curl, CURLOPT_RTSP_STREAM_URI, stream_uri); free(stream_uri); + stream_uri = NULL; - curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_OPTIONS); + test_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_OPTIONS); res = curl_easy_perform(curl); - if(res) - return res; + +test_cleanup: + + if(sdpf) + fclose(sdpf); + + if(stream_uri) + free(stream_uri); + + if(custom_headers) + curl_slist_free_all(custom_headers); curl_easy_cleanup(curl); curl_global_cleanup(); -- cgit v1.2.3