From b22134fd74dffbf616c4f523822f2aa5581105b8 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. (cherry picked from commit 609d96aa1283c362e5c03a157e747d218c70aa17) --- bin/dig/dig.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bin/dig/dig.c b/bin/dig/dig.c index 3e59f7f21a..890506e265 100644 --- a/bin/dig/dig.c +++ b/bin/dig/dig.c @@ -1483,6 +1483,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; @@ -2206,6 +2209,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 @@ -2479,6 +2485,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 a05508b0c40f988dd513cc15a76b90c7a5f94db1 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 (cherry picked from commit df5b4ba894589d4a36c173b7a3be7ecc322ff0f9) --- 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 890506e265..4ef81c8c22 100644 --- a/bin/dig/dig.c +++ b/bin/dig/dig.c @@ -1480,7 +1480,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) { @@ -2473,8 +2473,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;