Author: jerry
Date: 2005-12-16 15:00:31 +0000 (Fri, 16 Dec 2005)
New Revision: 12289

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12289

Log:
grabbing clilist memory leak fixed and unix_mask_match() fixes
Modified:
   branches/SAMBA_3_0_RELEASE/WHATSNEW.txt
   branches/SAMBA_3_0_RELEASE/source/auth/pampass.c
   branches/SAMBA_3_0_RELEASE/source/lib/util.c
   branches/SAMBA_3_0_RELEASE/source/libsmb/clilist.c
   branches/SAMBA_3_0_RELEASE/source/modules/vfs_recycle.c
   branches/SAMBA_3_0_RELEASE/source/rpc_client/cli_pipe.c
   branches/SAMBA_3_0_RELEASE/source/smbd/chgpasswd.c


Changeset:
Modified: branches/SAMBA_3_0_RELEASE/WHATSNEW.txt
===================================================================
--- branches/SAMBA_3_0_RELEASE/WHATSNEW.txt     2005-12-16 14:48:14 UTC (rev 
12288)
+++ branches/SAMBA_3_0_RELEASE/WHATSNEW.txt     2005-12-16 15:00:31 UTC (rev 
12289)
@@ -62,6 +62,8 @@
     * Correctly handle the LDAP_UNWILLING_TO_PERFORM error from 
       eDirectory when accessing the universal password.
     * Fix deadlock condition in share mode locking code.
+    * Fix logic bug in unix_mask_match().
+    * Fix memory leak in SMB client code found by Mikhail Kshevetskiy.
 
 
 o   Gerald (Jerry) Carter <[EMAIL PROTECTED]>

Modified: branches/SAMBA_3_0_RELEASE/source/auth/pampass.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/auth/pampass.c    2005-12-16 14:48:14 UTC 
(rev 12288)
+++ branches/SAMBA_3_0_RELEASE/source/auth/pampass.c    2005-12-16 15:00:31 UTC 
(rev 12289)
@@ -310,7 +310,7 @@
                                DEBUG(10,("smb_pam_passchange_conv: 
PAM_PROMPT_ECHO_ON: trying to match |%s| to |%s|\n",
                                                t->prompt, current_prompt ));
 
-                               if (unix_wild_match(t->prompt, current_prompt) 
== 0) {
+                               if (unix_wild_match(t->prompt, current_prompt)) 
{
                                        fstrcpy(current_reply, t->reply);
                                        DEBUG(10,("smb_pam_passchange_conv: 
PAM_PROMPT_ECHO_ON: We sent: %s\n", current_reply));
                                        pwd_sub(current_reply, 
udp->PAM_username, udp->PAM_password, udp->PAM_newpassword);
@@ -341,7 +341,7 @@
                                DEBUG(10,("smb_pam_passchange_conv: 
PAM_PROMPT_ECHO_OFF: trying to match |%s| to |%s|\n",
                                                t->prompt, current_prompt ));
 
-                               if (unix_wild_match(t->prompt, current_prompt) 
== 0) {
+                               if (unix_wild_match(t->prompt, current_prompt)) 
{
                                        fstrcpy(current_reply, t->reply);
                                        DEBUG(10,("smb_pam_passchange_conv: 
PAM_PROMPT_ECHO_OFF: We sent: %s\n", current_reply));
                                        pwd_sub(current_reply, 
udp->PAM_username, udp->PAM_password, udp->PAM_newpassword);

Modified: branches/SAMBA_3_0_RELEASE/source/lib/util.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/lib/util.c        2005-12-16 14:48:14 UTC 
(rev 12288)
+++ branches/SAMBA_3_0_RELEASE/source/lib/util.c        2005-12-16 15:00:31 UTC 
(rev 12289)
@@ -2640,6 +2640,7 @@
 
 /*******************************************************************
  Simple case insensitive interface to a UNIX wildcard matcher.
+ Returns True if match, False if not.
 *******************************************************************/
 
 BOOL unix_wild_match(const char *pattern, const char *string)
@@ -2660,7 +2661,7 @@
        if (strequal(p2,"*"))
                return True;
 
-       return unix_do_match(p2, s2) == 0;      
+       return unix_do_match(p2, s2);
 }
 
 /**********************************************************************

Modified: branches/SAMBA_3_0_RELEASE/source/libsmb/clilist.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/libsmb/clilist.c  2005-12-16 14:48:14 UTC 
(rev 12288)
+++ branches/SAMBA_3_0_RELEASE/source/libsmb/clilist.c  2005-12-16 15:00:31 UTC 
(rev 12289)
@@ -271,6 +271,10 @@
                           it gives ERRSRV/ERRerror temprarily */
                        uint8 eclass;
                        uint32 ecode;
+
+                       SAFE_FREE(rdata);
+                       SAFE_FREE(rparam);
+
                        cli_dos_error(cli, &eclass, &ecode);
                        if (eclass != ERRSRV || ecode != ERRerror)
                                break;
@@ -278,8 +282,11 @@
                        continue;
                }
 
-                if (cli_is_error(cli) || !rdata || !rparam) 
+                if (cli_is_error(cli) || !rdata || !rparam) {
+                       SAFE_FREE(rdata);
+                       SAFE_FREE(rparam);
                        break;
+               }
 
                if (total_received == -1)
                        total_received = 0;
@@ -297,8 +304,11 @@
                        ff_lastname = SVAL(p,6);
                }
 
-               if (ff_searchcount == 0) 
+               if (ff_searchcount == 0) {
+                       SAFE_FREE(rdata);
+                       SAFE_FREE(rparam);
                        break;
+               }
 
                /* point to the data bytes */
                p = rdata;
@@ -332,6 +342,8 @@
 
                if (!tdl) {
                        DEBUG(0,("cli_list_new: Failed to expand dirlist\n"));
+                       SAFE_FREE(rdata);
+                       SAFE_FREE(rparam);
                        break;
                } else {
                        dirlist = tdl;

Modified: branches/SAMBA_3_0_RELEASE/source/modules/vfs_recycle.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/modules/vfs_recycle.c     2005-12-16 
14:48:14 UTC (rev 12288)
+++ branches/SAMBA_3_0_RELEASE/source/modules/vfs_recycle.c     2005-12-16 
15:00:31 UTC (rev 12289)
@@ -319,7 +319,7 @@
        }
 
        for(i=0; haystack_list[i] ; i++) {
-               if(!unix_wild_match(haystack_list[i], needle)) {
+               if(unix_wild_match(haystack_list[i], needle)) {
                        return True;
                }
        }

Modified: branches/SAMBA_3_0_RELEASE/source/rpc_client/cli_pipe.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/rpc_client/cli_pipe.c     2005-12-16 
14:48:14 UTC (rev 12288)
+++ branches/SAMBA_3_0_RELEASE/source/rpc_client/cli_pipe.c     2005-12-16 
15:00:31 UTC (rev 12289)
@@ -789,6 +789,8 @@
                        (unsigned int)cli->fnum,
                        cli_errstr(cli->cli)));
                ret = cli_get_nt_error(cli->cli);
+               SAFE_FREE(rparam);
+               SAFE_FREE(prdata);
                goto err;
        }
 

Modified: branches/SAMBA_3_0_RELEASE/source/smbd/chgpasswd.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/smbd/chgpasswd.c  2005-12-16 14:48:14 UTC 
(rev 12288)
+++ branches/SAMBA_3_0_RELEASE/source/smbd/chgpasswd.c  2005-12-16 15:00:31 UTC 
(rev 12289)
@@ -263,7 +263,7 @@
                                pstrcpy( str, buffer);
                                trim_char( str, ' ', ' ');
 
-                               if ((match = (unix_wild_match(expected, str) == 
0))) {
+                               if ((match = unix_wild_match(expected, str)) == 
True) {
                                        /* Now data has started to return, 
lower timeout. */
                                        timeout = lp_passwd_chat_timeout() * 
100;
                                }

Reply via email to