svn commit: samba r13980 - branches/SAMBA_3_0/source/smbd
trunk/source/smbd
vlendec at samba.org
vlendec at samba.org
Tue Mar 7 19:52:26 GMT 2006
Author: vlendec
Date: 2006-03-07 19:52:26 +0000 (Tue, 07 Mar 2006)
New Revision: 13980
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13980
Log:
Fix Coverity bug # 63. Jeremy, could you take a look at this?
Thanks,
Volker
Modified:
branches/SAMBA_3_0/source/smbd/ipc.c
trunk/source/smbd/ipc.c
Changeset:
Modified: branches/SAMBA_3_0/source/smbd/ipc.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/ipc.c 2006-03-07 19:24:28 UTC (rev 13979)
+++ branches/SAMBA_3_0/source/smbd/ipc.c 2006-03-07 19:52:26 UTC (rev 13980)
@@ -380,7 +380,7 @@
unsigned int dscnt = SVAL(inbuf,smb_vwv11);
unsigned int dsoff = SVAL(inbuf,smb_vwv12);
unsigned int suwcnt = CVAL(inbuf,smb_vwv13);
- fstring local_machine_name;
+ char *local_machine_name;
START_PROFILE(SMBtrans);
memset(name, '\0',sizeof(name));
@@ -542,12 +542,23 @@
* WinCE wierdness....
*/
- fstrcpy( local_machine_name, get_local_machine_name() );
+ asprintf(&local_machine_name, "\\%s\\", get_local_machine_name());
- if (name[0] == '\\' && (StrnCaseCmp(&name[1],local_machine_name, strlen(local_machine_name)) == 0) &&
- (name[strlen(local_machine_name)+1] == '\\'))
- name_offset = strlen(local_machine_name)+1;
+ if (local_machine_name == NULL) {
+ srv_signing_trans_stop();
+ SAFE_FREE(data);
+ SAFE_FREE(params);
+ SAFE_FREE(setup);
+ END_PROFILE(SMBtrans);
+ return ERROR_NT(NT_STATUS_NO_MEMORY);
+ }
+ if (strnequal(name, local_machine_name, strlen(local_machine_name))) {
+ name_offset = strlen(local_machine_name)-1;
+ }
+
+ SAFE_FREE(local_machine_name);
+
if (strnequal(&name[name_offset], "\\PIPE", strlen("\\PIPE"))) {
name_offset += strlen("\\PIPE");
Modified: trunk/source/smbd/ipc.c
===================================================================
--- trunk/source/smbd/ipc.c 2006-03-07 19:24:28 UTC (rev 13979)
+++ trunk/source/smbd/ipc.c 2006-03-07 19:52:26 UTC (rev 13980)
@@ -380,7 +380,7 @@
unsigned int dscnt = SVAL(inbuf,smb_vwv11);
unsigned int dsoff = SVAL(inbuf,smb_vwv12);
unsigned int suwcnt = CVAL(inbuf,smb_vwv13);
- fstring local_machine_name;
+ char *local_machine_name;
START_PROFILE(SMBtrans);
memset(name, '\0',sizeof(name));
@@ -542,12 +542,23 @@
* WinCE wierdness....
*/
- fstrcpy( local_machine_name, get_local_machine_name() );
+ asprintf(&local_machine_name, "\\%s\\", get_local_machine_name());
- if (name[0] == '\\' && (StrnCaseCmp(&name[1],local_machine_name, strlen(local_machine_name)) == 0) &&
- (name[strlen(local_machine_name)+1] == '\\'))
- name_offset = strlen(local_machine_name)+1;
+ if (local_machine_name == NULL) {
+ srv_signing_trans_stop();
+ SAFE_FREE(data);
+ SAFE_FREE(params);
+ SAFE_FREE(setup);
+ END_PROFILE(SMBtrans);
+ return ERROR_NT(NT_STATUS_NO_MEMORY);
+ }
+ if (strnequal(name, local_machine_name, strlen(local_machine_name))) {
+ name_offset = strlen(local_machine_name)-1;
+ }
+
+ SAFE_FREE(local_machine_name);
+
if (strnequal(&name[name_offset], "\\PIPE", strlen("\\PIPE"))) {
name_offset += strlen("\\PIPE");
More information about the samba-cvs
mailing list