From 16cf25c332cfd2d8cc688728e8063627c73d2c1e Mon Sep 17 00:00:00 2001 From: jacob Date: Fri, 25 Mar 2005 19:39:04 +0000 Subject: [PATCH] b=5975 r=adilger use lustre_cfg_bufs_set_string() in userspace to NULL-terminate the flags --- lustre/utils/lustre_cfg.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lustre/utils/lustre_cfg.c b/lustre/utils/lustre_cfg.c index 33f0264..149f181 100644 --- a/lustre/utils/lustre_cfg.c +++ b/lustre/utils/lustre_cfg.c @@ -208,7 +208,7 @@ int jt_obd_cleanup(int argc, char **argv) struct lustre_cfg *lcfg; char force = 'F'; char failover = 'A'; - char flags[3]; + char flags[3] = { 0 }; int flag_cnt = 0, n; int rc; @@ -224,7 +224,10 @@ int jt_obd_cleanup(int argc, char **argv) if (argc < 1 || argc > 3) return CMD_HELP; - for (n = 1; n < argc; n++) + /* we are protected from overflowing our buffer by the argc + * check above + */ + for (n = 1; n < argc; n++) { if (strcmp(argv[n], "force") == 0) { flags[flag_cnt++] = force; } else if (strcmp(argv[n], "failover") == 0) { @@ -233,9 +236,10 @@ int jt_obd_cleanup(int argc, char **argv) fprintf(stderr, "unknown option: %s", argv[n]); return CMD_HELP; } + } if (flag_cnt) { - lustre_cfg_bufs_set(&bufs, 1, flags, flag_cnt); + lustre_cfg_bufs_set_string(&bufs, 1, flags); } lcfg = lustre_cfg_new(LCFG_CLEANUP, &bufs); -- 1.8.3.1