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; }
