[SCM] Samba Shared Repository - branch master updated - 07e0094365e8dc360a83eec2e7cf9b1d5d8d6d00

Jeremy Allison jra at samba.org
Thu Jan 1 02:07:39 GMT 2009


The branch, master has been updated
       via  07e0094365e8dc360a83eec2e7cf9b1d5d8d6d00 (commit)
      from  bb23f5725f538d14b2ccec0463cfb1136be3ebd0 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 07e0094365e8dc360a83eec2e7cf9b1d5d8d6d00
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Dec 31 18:06:57 2008 -0800

    Fix all warnings in source3 with gcc4.3.
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 lib/tdb/tools/tdbtool.c         |    4 ++-
 librpc/ndr/ndr_basic.c          |    3 +-
 source3/client/clitar.c         |   17 ++++++++++----
 source3/lib/fault.c             |   34 ++++++++++++++++++++++++++---
 source3/modules/vfs_netatalk.c  |    8 +++++-
 source3/modules/vfs_recycle.c   |   13 +++++++---
 source3/rpcclient/cmd_spoolss.c |   45 ++++++++++++++++++++++++++++++--------
 source3/utils/eventlogadm.c     |    4 ++-
 source3/utils/net_ads.c         |   35 ++++++++++++++++++++++++------
 source3/utils/net_cache.c       |    5 +--
 source3/utils/net_lookup.c      |    8 +++++-
 source3/utils/net_rpc.c         |    8 +++++-
 source3/utils/net_time.c        |    4 ++-
 source3/utils/net_util.c        |    3 +-
 source3/utils/profiles.c        |    2 +-
 source3/utils/smbget.c          |   28 +++++++++++++++++++-----
 16 files changed, 168 insertions(+), 53 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/tdb/tools/tdbtool.c b/lib/tdb/tools/tdbtool.c
index 2a11cda..b4ec095 100644
--- a/lib/tdb/tools/tdbtool.c
+++ b/lib/tdb/tools/tdbtool.c
@@ -506,7 +506,9 @@ static int do_command(void)
             return 0;
 	case CMD_SYSTEM:
 	    /* Shell command */
-	    system(arg1);
+	    if (system(arg1) == -1) {
+		terror("system() call failed\n");
+	    }
 	    return 0;
 	case CMD_QUIT:
 	    return 1;
diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c
index 1d2b47c..921af15 100644
--- a/librpc/ndr/ndr_basic.c
+++ b/librpc/ndr/ndr_basic.c
@@ -757,8 +757,7 @@ _PUBLIC_ void ndr_print_array_uint8(struct ndr_print *ndr, const char *name,
 	ndr->depth++;
 	for (i=0;i<count;i++) {
 		char *idx=NULL;
-		asprintf(&idx, "[%d]", i);
-		if (idx) {
+		if (asprintf(&idx, "[%d]", i) == -1) {
 			ndr_print_uint8(ndr, idx, data[i]);
 			free(idx);
 		}
diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index 7ad8a73..18edf03 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -329,13 +329,13 @@ static int dotarbuf(int f, char *b, int n)
 
 		diff=tbufsiz-tp;
 		memcpy(tarbuf + tp, b, diff);
-		fail=fail && (1+write(f, tarbuf, tbufsiz));
+		fail=fail && (1+sys_write(f, tarbuf, tbufsiz));
 		n-=diff;
 		b+=diff;
 		tp=0;
 
 		while (n >= tbufsiz) {
-			fail=fail && (1 + write(f, b, tbufsiz));
+			fail=fail && (1 + sys_write(f, b, tbufsiz));
 			n-=tbufsiz;
 			b+=tbufsiz;
 		}
@@ -364,7 +364,10 @@ static void dozerobuf(int f, int n)
 
 	if (n+tp >= tbufsiz) {
 		memset(tarbuf+tp, 0, tbufsiz-tp);
-		write(f, tarbuf, tbufsiz);
+		if (sys_write(f, tarbuf, tbufsiz) != tbufsiz) {
+			DEBUG(0, ("dozerobuf: sys_write fail\n"));
+			return;
+		}
 		memset(tarbuf, 0, (tp+=n-tbufsiz));
 	} else {
 		memset(tarbuf+tp, 0, n);
@@ -408,8 +411,12 @@ static void dotareof(int f)
 
 	/* Could be a pipe, in which case S_ISREG should fail,
 		* and we should write out at full size */
-	if (tp > 0)
-		write(f, tarbuf, S_ISREG(stbuf.st_mode) ? tp : tbufsiz);
+	if (tp > 0) {
+		size_t towrite = S_ISREG(stbuf.st_mode) ? tp : tbufsiz;
+		if (sys_write(f, tarbuf, towrite) != towrite) {
+			DEBUG(0,("dotareof: sys_write fail\n"));
+		}
+	}
 }
 
 /****************************************************************************
diff --git a/source3/lib/fault.c b/source3/lib/fault.c
index d038e57..c24fea1 100644
--- a/source3/lib/fault.c
+++ b/source3/lib/fault.c
@@ -119,7 +119,18 @@ void dump_core_setup(const char *progname)
 		SAFE_FREE(logbase);
 		return;
 	}
-	mkdir(corepath,0700);
+	if (mkdir(corepath,0700) == -1) {
+		if (errno != EEXIST) {
+			SAFE_FREE(corepath);
+			SAFE_FREE(logbase);
+			return;
+		}
+	}
+	if (chmod(corepath,0700) == -1) {
+		SAFE_FREE(corepath);
+		SAFE_FREE(logbase);
+		return;
+	}
 
 	SAFE_FREE(corepath);
 	if (asprintf(&corepath, "%s/cores/%s",
@@ -127,11 +138,26 @@ void dump_core_setup(const char *progname)
 		SAFE_FREE(logbase);
 		return;
 	}
-	mkdir(corepath,0700);
+	if (mkdir(corepath,0700) == -1) {
+		if (errno != EEXIST) {
+			SAFE_FREE(corepath);
+			SAFE_FREE(logbase);
+			return;
+		}
+	}
 
-	chown(corepath,getuid(),getgid());
-	chmod(corepath,0700);
+	if (chown(corepath,getuid(),getgid()) == -1) {
+		SAFE_FREE(corepath);
+		SAFE_FREE(logbase);
+		return;
+	}
+	if (chmod(corepath,0700) == -1) {
+		SAFE_FREE(corepath);
+		SAFE_FREE(logbase);
+		return;
+	}
 
+	SAFE_FREE(corepath);
 	SAFE_FREE(logbase);
 
 #ifdef HAVE_GETRLIMIT
diff --git a/source3/modules/vfs_netatalk.c b/source3/modules/vfs_netatalk.c
index ca7085c..e2fa0fb 100644
--- a/source3/modules/vfs_netatalk.c
+++ b/source3/modules/vfs_netatalk.c
@@ -367,7 +367,9 @@ static int atalk_chown(struct vfs_handle_struct *handle, const char *path, uid_t
 		goto exit_chown;
 	}
 
-	chown(adbl_path, uid, gid);
+	if (chown(adbl_path, uid, gid) == -1) {
+		DEBUG(3, ("ATALK: chown error %s\n", strerror(errno)));
+	}
 
 exit_chown:	
 	talloc_destroy(ctx);
@@ -399,7 +401,9 @@ static int atalk_lchown(struct vfs_handle_struct *handle, const char *path, uid_
 		goto exit_lchown;
 	}
 
-	lchown(adbl_path, uid, gid);
+	if (lchown(adbl_path, uid, gid) == -1) {
+		DEBUG(3, ("ATALK: lchown error %s\n", strerror(errno)));
+	}
 
 exit_lchown:	
 	talloc_destroy(ctx);
diff --git a/source3/modules/vfs_recycle.c b/source3/modules/vfs_recycle.c
index acc1936..cb985e1 100644
--- a/source3/modules/vfs_recycle.c
+++ b/source3/modules/vfs_recycle.c
@@ -525,7 +525,9 @@ static int recycle_unlink(vfs_handle_struct *handle, const char *file_name)
 	}
 
 	if (recycle_keep_dir_tree(handle) == True) {
-		asprintf(&temp_name, "%s/%s", repository, path_name);
+		if (asprintf(&temp_name, "%s/%s", repository, path_name) == -1) {
+			ALLOC_CHECK(temp_name, done);
+		}
 	} else {
 		temp_name = SMB_STRDUP(repository);
 	}
@@ -543,8 +545,9 @@ static int recycle_unlink(vfs_handle_struct *handle, const char *file_name)
 		}
 	}
 
-	asprintf(&final_name, "%s/%s", temp_name, base);
-	ALLOC_CHECK(final_name, done);
+	if (asprintf(&final_name, "%s/%s", temp_name, base) == -1) {
+		ALLOC_CHECK(final_name, done);
+	}
 	DEBUG(10, ("recycle: recycled file name: %s\n", final_name));		/* new filename with path */
 
 	/* check if we should delete file from recycle bin */
@@ -561,7 +564,9 @@ static int recycle_unlink(vfs_handle_struct *handle, const char *file_name)
 	i = 1;
 	while (recycle_file_exist(handle, final_name)) {
 		SAFE_FREE(final_name);
-		asprintf(&final_name, "%s/Copy #%d of %s", temp_name, i++, base);
+		if (asprintf(&final_name, "%s/Copy #%d of %s", temp_name, i++, base) == -1) {
+			ALLOC_CHECK(final_name, done);
+		}
 	}
 
 	DEBUG(10, ("recycle: Moving %s to %s\n", file_name, final_name));
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index 038acfb..ecd0f36 100644
--- a/source3/rpcclient/cmd_spoolss.c
+++ b/source3/rpcclient/cmd_spoolss.c
@@ -1655,9 +1655,14 @@ static WERROR cmd_spoolss_addform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	if (asprintf(&servername, "\\\\%s", cli->desthost) == -1) {
+		return WERR_NOMEM;
+	}
 	strupper_m(servername);
-	asprintf(&printername, "%s\\%s", servername, argv[1]);
+	if (asprintf(&printername, "%s\\%s", servername, argv[1]) == -1) {
+		SAFE_FREE(servername);
+		return WERR_NOMEM;
+	}
 
 	werror = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, "", 
 					     PRINTER_ALL_ACCESS, 
@@ -1716,9 +1721,14 @@ static WERROR cmd_spoolss_setform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	if (asprintf(&servername, "\\\\%s", cli->desthost)) {
+		return WERR_NOMEM;
+	}
 	strupper_m(servername);
-	asprintf(&printername, "%s\\%s", servername, argv[1]);
+	if (asprintf(&printername, "%s\\%s", servername, argv[1]) == -1) {
+		SAFE_FREE(servername);
+		return WERR_NOMEM;
+	}
 
 	werror = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
@@ -1813,9 +1823,14 @@ static WERROR cmd_spoolss_getform(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	if (asprintf(&servername, "\\\\%s", cli->desthost) == -1) {
+		return WERR_NOMEM;
+	}
 	strupper_m(servername);
-	asprintf(&printername, "%s\\%s", servername, argv[1]);
+	if (asprintf(&printername, "%s\\%s", servername, argv[1])) {
+		SAFE_FREE(servername);
+		return WERR_NOMEM;
+	}
 
 	werror = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
@@ -1866,9 +1881,14 @@ static WERROR cmd_spoolss_deleteform(struct rpc_pipe_client *cli,
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	if (asprintf(&servername, "\\\\%s", cli->desthost) == -1) {
+		return WERR_NOMEM;
+	}
 	strupper_m(servername);
-	asprintf(&printername, "%s\\%s", servername, argv[1]);
+	if (asprintf(&printername, "%s\\%s", servername, argv[1]) == -1) {
+		SAFE_FREE(servername);
+		return WERR_NOMEM;
+	}
 
 	werror = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
@@ -1916,9 +1936,14 @@ static WERROR cmd_spoolss_enum_forms(struct rpc_pipe_client *cli,
 	
 	/* Get a printer handle */
 
-	asprintf(&servername, "\\\\%s", cli->desthost);
+	if (asprintf(&servername, "\\\\%s", cli->desthost) == -1) {
+		return WERR_NOMEM;
+	}
 	strupper_m(servername);
-	asprintf(&printername, "%s\\%s", servername, argv[1]);
+	if (asprintf(&printername, "%s\\%s", servername, argv[1]) == -1) {
+		SAFE_FREE(servername);
+		return WERR_NOMEM;
+	}
 
 	werror = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
diff --git a/source3/utils/eventlogadm.c b/source3/utils/eventlogadm.c
index 1b38a7b..5fed4d1 100644
--- a/source3/utils/eventlogadm.c
+++ b/source3/utils/eventlogadm.c
@@ -111,7 +111,9 @@ static int DoWriteCommand( int argc, char **argv, bool debugflag, char *exename
 	ZERO_STRUCT( ee );	/* MUST initialize between records */
 
 	while ( !feof( f1 ) ) {
-		fgets( linein, sizeof( linein ) - 1, f1 );
+		if (fgets( linein, sizeof( linein ) - 1, f1 ) == NULL) {
+			break;
+		}
 		linein[strlen( linein ) - 1] = 0;	/* whack the line delimiter */
 
 		if ( debugflag )
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
index 27d5346..766f321 100644
--- a/source3/utils/net_ads.c
+++ b/source3/utils/net_ads.c
@@ -478,7 +478,9 @@ static int ads_user_add(struct net_context *c, int argc, const char **argv)
 	}
 
 	/* try setting the password */
-	asprintf(&upn, "%s@%s", argv[0], ads->config.realm);
+	if (asprintf(&upn, "%s@%s", argv[0], ads->config.realm) == -1) {
+		goto done;
+	}
 	status = ads_krb5_set_password(ads->auth.kdc_server, upn, argv[1],
 				       ads->auth.time_offset);
 	SAFE_FREE(upn);
@@ -533,7 +535,10 @@ static int ads_user_info(struct net_context *c, int argc, const char **argv)
 		return -1;
 	}
 
-	asprintf(&searchstring, "(sAMAccountName=%s)", escaped_user);
+	if (asprintf(&searchstring, "(sAMAccountName=%s)", escaped_user) == -1) {
+		SAFE_FREE(escaped_user);
+		return -1;
+	}
 	rc = ads_search(ads, &res, searchstring, attrs);
 	SAFE_FREE(searchstring);
 
@@ -1297,7 +1302,9 @@ int net_ads_join(struct net_context *c, int argc, const char **argv)
 			/* kinit with the machine password */
 
 			use_in_memory_ccache();
-			asprintf( &ads_dns->auth.user_name, "%s$", global_myname() );
+			if (asprintf( &ads_dns->auth.user_name, "%s$", global_myname()) == -1) {
+				goto fail;
+			}
 			ads_dns->auth.password = secrets_fetch_machine_password(
 				r->out.netbios_domain_name, NULL, NULL );
 			ads_dns->auth.realm = SMB_STRDUP( r->out.dns_domain_name );
@@ -1636,7 +1643,14 @@ static int net_ads_printer_publish(struct net_context *c, int argc, const char *
 		return -1;
 	}
 
-	asprintf(&prt_dn, "cn=%s-%s,%s", srv_cn_escaped, printername_escaped, srv_dn);
+	if (asprintf(&prt_dn, "cn=%s-%s,%s", srv_cn_escaped, printername_escaped, srv_dn) == -1) {
+		SAFE_FREE(srv_cn_escaped);
+		SAFE_FREE(printername_escaped);
+		d_fprintf(stderr, "Internal error, out of memory!");
+		ads_destroy(&ads);
+		talloc_destroy(mem_ctx);
+		return -1;
+	}
 
 	SAFE_FREE(srv_cn_escaped);
 	SAFE_FREE(printername_escaped);
@@ -1807,7 +1821,9 @@ static int net_ads_password(struct net_context *c, int argc, const char **argv)
 
 	user = argv[0];
 	if (!strchr_m(user, '@')) {
-		asprintf(&chr, "%s@%s", argv[0], lp_realm());
+		if (asprintf(&chr, "%s@%s", argv[0], lp_realm()) == -1) {
+			return -1;
+		}
 		user = chr;
 	}
 
@@ -1837,7 +1853,9 @@ static int net_ads_password(struct net_context *c, int argc, const char **argv)
 	if (argv[1]) {
 		new_password = (char *)argv[1];
 	} else {
-		asprintf(&prompt, "Enter new password for %s:", user);
+		if (asprintf(&prompt, "Enter new password for %s:", user) == -1) {
+			return -1;
+		}
 		new_password = getpass(prompt);
 		free(prompt);
 	}
@@ -1885,7 +1903,10 @@ int net_ads_changetrustpw(struct net_context *c, int argc, const char **argv)
 
 	fstrcpy(my_name, global_myname());
 	strlower_m(my_name);
-	asprintf(&host_principal, "%s$@%s", my_name, ads->config.realm);
+	if (asprintf(&host_principal, "%s$@%s", my_name, ads->config.realm) == -1) {
+		ads_destroy(&ads);
+		return -1;
+	}
 	d_printf("Changing password for principal: %s\n", host_principal);
 
 	ret = ads_change_trust_account_password(ads, host_principal);
diff --git a/source3/utils/net_cache.c b/source3/utils/net_cache.c
index 4e9ae18..cabb6d5 100644
--- a/source3/utils/net_cache.c
+++ b/source3/utils/net_cache.c
@@ -64,9 +64,8 @@ static void print_cache_entry(const char* keystr, const char* datastr,
 		}
 		timeout_str[strlen(timeout_str) - 1] = '\0';	/* remove tailing CR */
 	} else {
-		asprintf(&alloc_str, "%.2d:%.2d:%.2d", timeout_tm.tm_hour,
-		         timeout_tm.tm_min, timeout_tm.tm_sec);
-		if (!alloc_str) {
+		if (asprintf(&alloc_str, "%.2d:%.2d:%.2d", timeout_tm.tm_hour,
+		         timeout_tm.tm_min, timeout_tm.tm_sec) == -1) {
 			return;
 		}
 		timeout_str = alloc_str;
diff --git a/source3/utils/net_lookup.c b/source3/utils/net_lookup.c
index 8b9ddb6..66f673b 100644
--- a/source3/utils/net_lookup.c
+++ b/source3/utils/net_lookup.c
@@ -196,7 +196,9 @@ static int net_lookup_dc(struct net_context *c, int argc, const char **argv)
 		return -1;
 
 	print_sockaddr(addr, sizeof(addr), &ss);
-	asprintf(&pdc_str, "%s", addr);
+	if (asprintf(&pdc_str, "%s", addr) == -1) {
+		return -1;
+	}
 	d_printf("%s\n", pdc_str);
 
 	sitename = sitename_fetch(domain);
@@ -237,7 +239,9 @@ static int net_lookup_pdc(struct net_context *c, int argc, const char **argv)
 		return -1;
 
 	print_sockaddr(addr, sizeof(addr), &ss);
-	asprintf(&pdc_str, "%s", addr);
+	if (asprintf(&pdc_str, "%s", addr) == -1) {
+		return -1;
+	}
 	d_printf("%s\n", pdc_str);
 	SAFE_FREE(pdc_str);
 	return 0;
diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c
index 5c83b59..e0d606c 100644
--- a/source3/utils/net_rpc.c
+++ b/source3/utils/net_rpc.c
@@ -749,7 +749,9 @@ static int rpc_user_password(struct net_context *c, int argc, const char **argv)
 	if (argv[1]) {
 		u1003.usri1003_password = argv[1];
 	} else {
-		asprintf(&prompt, "Enter new password for %s:", argv[0]);
+		if (asprintf(&prompt, "Enter new password for %s:", argv[0]) == -1) {
+			return -1;
+		}
 		u1003.usri1003_password = getpass(prompt);
 		SAFE_FREE(prompt);
 	}
@@ -5533,7 +5535,9 @@ static int rpc_trustdom_establish(struct net_context *c, int argc,
 	strupper_m(domain_name);
 
 	/* account name used at first is our domain's name with '$' */
-	asprintf(&acct_name, "%s$", lp_workgroup());
+	if (asprintf(&acct_name, "%s$", lp_workgroup()) == -1) {
+		return -1;
+	}
 	strupper_m(acct_name);
 
 	/*
diff --git a/source3/utils/net_time.c b/source3/utils/net_time.c
index 8be9ed9..b619837 100644
--- a/source3/utils/net_time.c
+++ b/source3/utils/net_time.c
@@ -116,7 +116,9 @@ static int net_time_set(struct net_context *c, int argc, const char **argv)
 	/* yes, I know this is cheesy. Use "net time system" if you want to
 	   roll your own. I'm putting this in as it works on a large number
 	   of systems and the user has a choice in whether its used or not */
-	asprintf(&cmd, "/bin/date %s", systime(t));
+	if (asprintf(&cmd, "/bin/date %s", systime(t)) == -1) {
+		return -1;
+	}
 	result = system(cmd);
 	if (result)
 		d_fprintf(stderr, "%s failed.  Error was (%s)\n",
diff --git a/source3/utils/net_util.c b/source3/utils/net_util.c
index 590a916..7fbfdba 100644
--- a/source3/utils/net_util.c
+++ b/source3/utils/net_util.c
@@ -550,8 +550,7 @@ const char *net_prompt_pass(struct net_context *c, const char *user)
 		return NULL;
 	}
 
-	asprintf(&prompt, "Enter %s's password:", user);
-	if (!prompt) {
+	if (asprintf(&prompt, "Enter %s's password:", user) == -1) {
 		return NULL;
 	}
 
diff --git a/source3/utils/profiles.c b/source3/utils/profiles.c
index 0b8a0d4..5dd788a 100644
--- a/source3/utils/profiles.c
+++ b/source3/utils/profiles.c
@@ -47,7 +47,7 @@ static void verbose_output(const char *format, ...)
 		return;
 	}
 
-	fprintf(stdout, var);
+	fprintf(stdout, "%s", var);
 	va_end(args);
 	SAFE_FREE(var);
 }
diff --git a/source3/utils/smbget.c b/source3/utils/smbget.c
index 3d4a71b..c062134 100644
--- a/source3/utils/smbget.c
+++ b/source3/utils/smbget.c


-- 
Samba Shared Repository


More information about the samba-cvs mailing list