]> granicus.if.org Git - curl/commitdiff
Fix NTLM winbind support to pass the torture tests
authorDan Fandrich <dan@coneharvesters.com>
Fri, 2 Sep 2011 20:15:58 +0000 (13:15 -0700)
committerDan Fandrich <dan@coneharvesters.com>
Fri, 2 Sep 2011 20:22:20 +0000 (13:22 -0700)
Calling sclose() both in the child and the parent fools the
socket leak detector into thinking it's been closed twice.
Calling close() in the child instead overcomes this problem. It's
not as portable as the sclose() macro, but this code is highly
POSIX-specific, anyway.

lib/curl_ntlm_wb.c

index b9cc314ef88052ff836c43335359a7b9d56d4c2a..ff7339373bafc0302db97de64643ab888d57321b 100644 (file)
@@ -166,8 +166,8 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
      * child process
      */
 
-    sclose(sockfds[0]);
-
+    /* Don't use sclose in the child since it fools the socket leak detector */
+    close(sockfds[0]);
     if(dup2(sockfds[1], STDIN_FILENO) == -1) {
       error = ERRNO;
       failf(conn->data, "Could not redirect child stdin. errno %d: %s",
@@ -197,7 +197,7 @@ static CURLcode ntlm_wb_init(struct connectdata *conn, const char *userp)
             NULL);
 
     error = ERRNO;
-    sclose(sockfds[1]);
+    close(sockfds[1]);
     failf(conn->data, "Could not execl(). errno %d: %s",
           error, Curl_strerror(conn, error));
     exit(1);