]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Cleanup: check URN list before using it
authorAmos Jeffries <squid3@treenet.co.nz>
Sat, 6 Aug 2016 05:55:37 +0000 (17:55 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Sat, 6 Aug 2016 05:55:37 +0000 (17:55 +1200)
The check should not be needed, the URN parse function always allocates.
But do it at the right time even so.

 Detected by Coverity Scan. Issue 434062

src/urn.cc

index 6b739aedde38601bac70e11b00c780b89cecfa7f..62269a6a118b34cf20c700d984d40dcfc9ff5b54 100644 (file)
@@ -318,12 +318,7 @@ urnHandleReply(void *data, StoreIOBuffer result)
 
     urls = urnParseReply(s, urnState->request->method);
 
-    for (i = 0; NULL != urls[i].url; ++i)
-        ++urlcnt;
-
-    debugs(53, 3, "urnFindMinRtt: Counted " << i << " URLs");
-
-    if (urls == NULL) {     /* unknown URN error */
+    if (!urls) {     /* unknown URN error */
         debugs(52, 3, "urnTranslateDone: unknown URN " << e->url());
         err = new ErrorState(ERR_URN_RESOLVE, Http::scNotFound, urnState->request.getRaw());
         err->url = xstrdup(e->url());
@@ -332,6 +327,11 @@ urnHandleReply(void *data, StoreIOBuffer result)
         return;
     }
 
+    for (i = 0; urls[i].url; ++i)
+        ++urlcnt;
+
+    debugs(53, 3, "urnFindMinRtt: Counted " << i << " URLs");
+
     min_u = urnFindMinRtt(urls, urnState->request->method, NULL);
     qsort(urls, urlcnt, sizeof(*urls), url_entry_sort);
     e->buffer();