This is not-very-beautiful, but logically correct fix for http-proxy and
proxy-user support in freshclam. It fixes uninitialized pointers freeing,
too.


-- 

Best regards,
Nick
(GPG Key ID: 4396B2D0, fingerprint: 648E C3FE ACF6 A730 FF52 D717 776D 1CB0 4396 B2D0)


diff -r -U 3 clamav-20030522-orig/freshclam/manager.c 
clamav-20030522/freshclam/manager.c
--- clamav-20030522-orig/freshclam/manager.c    Thu Apr 24 02:46:57 2003
+++ clamav-20030522/freshclam/manager.c Wed May 28 13:55:51 2003
@@ -393,17 +393,21 @@
     if(proxy) {
         remotename = mmalloc(strlen(hostname) + 8);
         sprintf(remotename, "http://%s";, hostname);
-    } else if(user) {
-        int len;
-       char* buf = mmalloc(strlen(user)*2+4);
-        len=fmt_base64(buf,user,strlen(user));
-        buf[len]='\0';
-        authorization = mmalloc(strlen(buf) + 30);
-        sprintf(authorization, "Proxy-Authorization: Basic %s\r\n", buf);
-        free(buf);
+
+        if(user) {
+            int len;
+           char* buf = mmalloc(strlen(user)*2+4);
+            len=fmt_base64(buf,user,strlen(user));
+            buf[len]='\0';
+            authorization = mmalloc(strlen(buf) + 30);
+            sprintf(authorization, "Proxy-Authorization: Basic %s\r\n", buf);
+            free(buf);
+        } else {
+            authorization = strdup("");
+        }
     } else {
-        authorization = strdup("");
         remotename = strdup("");
+        authorization = strdup("");
     }
 
     mprintf("Reading md5 sum (%s): ", file);
@@ -487,18 +491,22 @@
     if(proxy) {
         remotename = mmalloc(strlen(hostname) + 8);
         sprintf(remotename, "http://%s";, hostname);
-    } else if(user) {
-        int len;
-       char* buf = mmalloc(strlen(user)*2+4);
-        len=fmt_base64(buf,user,strlen(user));
-        buf[len]='\0';
-        authorization = mmalloc(strlen(buf) + 30);
-        sprintf(authorization, "Proxy-Authorization: Basic %s\r\n", buf);
-        free(buf);
+        if(user) {
+            int len;
+           char* buf = mmalloc(strlen(user)*2+4);
+            len=fmt_base64(buf,user,strlen(user));
+            buf[len]='\0';
+            authorization = mmalloc(strlen(buf) + 30);
+            sprintf(authorization, "Proxy-Authorization: Basic %s\r\n", buf);
+            free(buf);
+        } else {
+            authorization = strdup("");
+        }
     } else {
-        authorization = strdup("");
         remotename = strdup("");
+        authorization = strdup("");
     }
+
 
     if((fd = open(file, O_WRONLY|O_CREAT|O_EXCL, 0644)) == -1) {
        mprintf("@Can't open new file %s to write\n", file);

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to