From: Adam Dickmeiss Date: Wed, 24 Sep 2008 18:19:37 +0000 (+0200) Subject: Ensure format command is a no-op if bad syntax is passed to it. X-Git-Tag: v3.0.36~4^2 X-Git-Url: http://lists.indexdata.com/cgi-bin?a=commitdiff_plain;h=160f79b459b7d7dc07830e679349d82c3a77256d;p=yaz-moved-to-github.git Ensure format command is a no-op if bad syntax is passed to it. --- diff --git a/client/client.c b/client/client.c index c34d201..106f12d 100644 --- a/client/client.c +++ b/client/client.c @@ -3267,23 +3267,29 @@ int cmd_format(const char *arg) printf("Usage: format \n"); return 0; } + while (sscanf(cp, "%40s%n", form_str, &nor) >= 1 && nor > 0 + && idx < RECORDSYNTAX_MAX) + { + if (strcmp(form_str, "none") && + !yaz_string_to_oid_odr(yaz_oid_std(), CLASS_RECSYN, form_str, out)) + { + printf("Bad format: %s\n", form_str); + return 0; + } + cp += nor; + } for (i = 0; i < recordsyntax_size; i++) { xfree(recordsyntax_list[i]); recordsyntax_list[i] = 0; } - + + cp = arg; while (sscanf(cp, "%40s%n", form_str, &nor) >= 1 && nor > 0 && idx < RECORDSYNTAX_MAX) { if (!strcmp(form_str, "none")) break; - if (!yaz_string_to_oid_odr(yaz_oid_std(), CLASS_RECSYN, form_str, out)) - { - printf("Bad format: %s\n", form_str); - recordsyntax_size = 0; - return 0; - } recordsyntax_list[idx] = xstrdup(form_str); cp += nor; idx++;