[fedfs-utils] [PATCH 1/3] nsdbc: Stronger sanity-checking for incoming UUIDs

Chuck Lever chuck.lever at oracle.com
Mon May 19 09:39:30 PDT 2014


The nsdb-create-fsl command copies command line arguments into
pre-allocated buffers.

Fixes: 04e2508557766ca65d684f82dbbc0d1c1a833a9f
Signed-off-by: Chuck Lever <chuck.lever at oracle.com>
---
 src/nsdbc/nsdb-create-fsl.c |   20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/src/nsdbc/nsdb-create-fsl.c b/src/nsdbc/nsdb-create-fsl.c
index b30ec5df92b0..476749612a18 100644
--- a/src/nsdbc/nsdb-create-fsl.c
+++ b/src/nsdbc/nsdb-create-fsl.c
@@ -105,9 +105,10 @@ nsdb_create_fsl_usage(const char *progname)
 int
 main(int argc, char **argv)
 {
-	char *nce, *fsn_uuid, *fsl_uuid, *servername, *serverpath;
+	char *nce, *servername, *serverpath;
 	char *progname, *binddn, *nsdbname;
 	unsigned short nsdbport, serverport;
+	uuid_t fsn_uu, fsl_uu;
 	struct fedfs_fsl *fsl;
 	FedFsStatus retval;
 	nsdb_t host;
@@ -169,14 +170,11 @@ main(int argc, char **argv)
 		}
 	}
 	if (argc == optind + 4) {
-		uuid_t uu;
-		fsn_uuid = argv[optind];
-		if (uuid_parse(fsn_uuid, uu) == -1) {
+		if (uuid_parse(argv[optind], fsn_uu) == -1) {
 			fprintf(stderr, "Invalid FSN UUID was specified\n");
 			nsdb_create_fsl_usage(progname);
 		}
-		fsl_uuid = argv[optind + 1];
-		if (uuid_parse(fsl_uuid, uu) == -1) {
+		if (uuid_parse(argv[optind + 1], fsl_uu) == -1) {
 			fprintf(stderr, "Invalid FSL UUID was specified\n");
 			nsdb_create_fsl_usage(progname);
 		}
@@ -202,8 +200,8 @@ main(int argc, char **argv)
 		fprintf(stderr, "Failed to allocate FSL\n");
 		goto out;
 	}
-	strcpy(fsl->fl_fsluuid, fsl_uuid);
-	strcpy(fsl->fl_fsnuuid, fsn_uuid);
+	uuid_unparse(fsn_uu, fsl->fl_fsnuuid);
+	uuid_unparse(fsl_uu, fsl->fl_fsluuid);
 
 	retval = FEDFS_ERR_NAMETOOLONG;
 	if (strlen(servername) >= sizeof(fsl->fl_u.fl_nfsfsl.fn_fslhost)) {
@@ -285,7 +283,7 @@ main(int argc, char **argv)
 	switch (retval) {
 	case FEDFS_OK:
 		printf("Successfully created FSL record for %s under %s\n",
-				fsl_uuid, nce);
+				fsl->fl_fsluuid, nce);
 		break;
 	case FEDFS_ERR_NSDB_NONCE:
 		if (nce == NULL)
@@ -306,12 +304,12 @@ main(int argc, char **argv)
 			break;
 		default:
 			fprintf(stderr, "Failed to create FSL %s: %s\n",
-				fsl_uuid, nsdb_ldaperr2string(host));
+				fsl->fl_fsluuid, nsdb_ldaperr2string(host));
 		}
 		break;
 	default:
 		fprintf(stderr, "Failed to create FSL %s: %s\n",
-			fsl_uuid, nsdb_display_fedfsstatus(retval));
+			fsl->fl_fsluuid, nsdb_display_fedfsstatus(retval));
 	}
 
 	nsdb_close_nsdb(host);




More information about the fedfs-utils-devel mailing list