2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-01 15:05:23 +00:00

dig and mdig failed to properly preparse dash value pairs when value was a seperate argument and started with a dash.

This commit is contained in:
Mark Andrews
2018-11-06 11:59:04 +11:00
parent 1003ef4d67
commit 75fa84b67b
3 changed files with 33 additions and 1 deletions

View File

@@ -1,3 +1,7 @@
5090. [bug] dig and mdig failed to properly preparse dash value
pairs when value was a seperate argument and started
with a dash. [GL #584]
5089. [bug] Restore localhost fallback in dig and host which is 5089. [bug] Restore localhost fallback in dig and host which is
used when no nameserver addresses present in used when no nameserver addresses present in
/etc/resolv.conf are usable due to the requested /etc/resolv.conf are usable due to the requested

View File

@@ -1859,6 +1859,20 @@ preparse_args(int argc, char **argv) {
} }
option = &option[1]; option = &option[1];
} }
if (strlen(option) == 0U) {
continue;
}
/* Look for dash value option. */
if (strpbrk(option, dash_opts) != &option[0] ||
strlen(option) > 1U) {
/* Error or value in option. */
continue;
}
/* Dash value is next argument so we need to skip it. */
rc--, rv++;
/* Handle missing argument */
if (rc == 0)
break;
} }
} }

View File

@@ -1535,7 +1535,7 @@ plus_option(char *option, struct query *query, bool global)
* #true returned if value was used * #true returned if value was used
*/ */
static const char *single_dash_opts = "46himv"; static const char *single_dash_opts = "46himv";
/*static const char *dash_opts = "46bcfhiptvx";*/ static const char *dash_opts = "46bcfhiptvx";
static bool static bool
dash_option(const char *option, char *next, struct query *query, dash_option(const char *option, char *next, struct query *query,
bool global, bool *setname) bool global, bool *setname)
@@ -1755,6 +1755,20 @@ preparse_args(int argc, char **argv) {
} }
option = &option[1]; option = &option[1];
} }
if (strlen(option) == 0U) {
continue;
}
/* Look for dash value option. */
if (strpbrk(option, dash_opts) != &option[0] ||
strlen(option) > 1U) {
/* Error or value in option. */
continue;
}
/* Dash value is next argument so we need to skip it. */
rc--, rv++;
/* Handle missing argument */
if (rc == 0)
break;
} }
} }