From 609d96aa1283c362e5c03a157e747d218c70aa17 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 17 Oct 2024 12:03:22 +1100 Subject: [PATCH 1/2] Restore seperator values strtok_r is destructive. Restore the seperators so that the command line can be properly displayed. --- bin/dig/dig.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bin/dig/dig.c b/bin/dig/dig.c index 288b327ef2..16b2de5e85 100644 --- a/bin/dig/dig.c +++ b/bin/dig/dig.c @@ -1827,6 +1827,9 @@ plus_option(char *option, bool is_batchfile, bool *need_clone, extra = strtok_r(NULL, "\0", &last); save_opt(lookup, code, extra); + if (extra != NULL) { + extra[-1] = ':'; + } break; default: goto invalid_option; @@ -2555,6 +2558,9 @@ plus_option(char *option, bool is_batchfile, bool *need_clone, fprintf(stderr, "Invalid option: +%s\n", option); usage(); } + if (value != NULL) { + value[-1] = '='; + } return (lookup); #if !TARGET_OS_IPHONE @@ -2826,6 +2832,10 @@ dash_option(char *option, char *next, dig_lookup_t **lookup, /* XXXONDREJ: FIXME */ strlcpy(keynametext, ptr, sizeof(keynametext)); strlcpy(keysecret, ptr2, sizeof(keysecret)); + if (ptr3 != NULL) { + ptr[-1] = ':'; + } + ptr2[-1] = ':'; return (value_from_next); case 'x': if (*need_clone) { From df5b4ba894589d4a36c173b7a3be7ecc322ff0f9 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 17 Oct 2024 12:31:25 +1100 Subject: [PATCH 2/2] Correctly get final token --- bin/dig/dig.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/dig/dig.c b/bin/dig/dig.c index 16b2de5e85..93fa103216 100644 --- a/bin/dig/dig.c +++ b/bin/dig/dig.c @@ -1824,7 +1824,7 @@ plus_option(char *option, bool is_batchfile, bool *need_clone, "specified"); goto exit_or_usage; } - extra = strtok_r(NULL, "\0", + extra = strtok_r(NULL, "", &last); save_opt(lookup, code, extra); if (extra != NULL) { @@ -2820,8 +2820,8 @@ dash_option(char *option, char *next, dig_lookup_t **lookup, * secret */ usage(); } - if ((ptr3 = strtok_r(NULL, ":", &last)) != NULL) { /* secret or - * NULL */ + if ((ptr3 = strtok_r(NULL, "", &last)) != NULL) { /* secret or + * NULL */ parse_hmac(ptr); ptr = ptr2; ptr2 = ptr3;