]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add DBC REQUIRE to check that 'text' is non NULL
authorMark Andrews <marka@isc.org>
Tue, 18 May 2021 06:37:08 +0000 (16:37 +1000)
committerMark Andrews <marka@isc.org>
Mon, 12 Jul 2021 03:55:37 +0000 (03:55 +0000)
for all control channel commands.  This should silence
gcc-10-analyzer reporting NULL pointer dereference of 'text'.

bin/named/server.c

index adff7f55ccd1128ffc2ab917f344d06a012eb1b3..0339f0bef804b95c84429a42542de92f21bdbca6 100644 (file)
@@ -10866,6 +10866,8 @@ named_server_retransfercommand(named_server_t *server, isc_lex_t *lex,
        dns_zone_t *raw = NULL;
        dns_zonetype_t type;
 
+       REQUIRE(text != NULL);
+
        result = zone_from_args(server, lex, NULL, &zone, NULL, text, true);
        if (result != ISC_R_SUCCESS) {
                return (result);
@@ -10913,6 +10915,8 @@ named_server_reloadcommand(named_server_t *server, isc_lex_t *lex,
        dns_zonetype_t type;
        const char *msg = NULL;
 
+       REQUIRE(text != NULL);
+
        result = zone_from_args(server, lex, NULL, &zone, NULL, text, true);
        if (result != ISC_R_SUCCESS) {
                return (result);
@@ -10993,6 +10997,8 @@ named_server_notifycommand(named_server_t *server, isc_lex_t *lex,
        dns_zone_t *zone = NULL;
        const char msg[] = "zone notify queued";
 
+       REQUIRE(text != NULL);
+
        result = zone_from_args(server, lex, NULL, &zone, NULL, text, true);
        if (result != ISC_R_SUCCESS) {
                return (result);
@@ -11021,6 +11027,8 @@ named_server_refreshcommand(named_server_t *server, isc_lex_t *lex,
        const char msg2[] = "not a slave, mirror, or stub zone";
        dns_zonetype_t type;
 
+       REQUIRE(text != NULL);
+
        result = zone_from_args(server, lex, NULL, &zone, NULL, text, true);
        if (result != ISC_R_SUCCESS) {
                return (result);
@@ -11630,6 +11638,8 @@ named_server_dumpdb(named_server_t *server, isc_lex_t *lex,
        const char *sep;
        bool found;
 
+       REQUIRE(text != NULL);
+
        /* Skip the command name. */
        ptr = next_token(lex, NULL);
        if (ptr == NULL) {
@@ -11753,6 +11763,8 @@ named_server_dumpsecroots(named_server_t *server, isc_lex_t *lex,
        unsigned int used = isc_buffer_usedlength(*text);
        bool first = true;
 
+       REQUIRE(text != NULL);
+
        /* Skip the command name. */
        ptr = next_token(lex, text);
        if (ptr == NULL) {
@@ -11941,6 +11953,8 @@ named_server_validation(named_server_t *server, isc_lex_t *lex,
        isc_result_t result;
        bool enable = true, set = true, first = true;
 
+       REQUIRE(text != NULL);
+
        /* Skip the command name. */
        ptr = next_token(lex, text);
        if (ptr == NULL) {
@@ -12261,6 +12275,8 @@ named_server_status(named_server_t *server, isc_buffer_t **text) {
        char line[1024], hostname[256];
        named_reload_t reload_status;
 
+       REQUIRE(text != NULL);
+
        if (named_g_server->version_set) {
                ob = " (";
                cb = ")";
@@ -12387,6 +12403,8 @@ named_server_testgen(isc_lex_t *lex, isc_buffer_t **text) {
        unsigned long i;
        const unsigned char chars[] = "abcdefghijklmnopqrstuvwxyz0123456789";
 
+       REQUIRE(text != NULL);
+
        /* Skip the command name. */
        ptr = next_token(lex, text);
        if (ptr == NULL) {
@@ -12482,6 +12500,8 @@ named_server_tsigdelete(named_server_t *server, isc_lex_t *lex,
        char target[DNS_NAME_FORMATSIZE];
        char fbuf[16];
 
+       REQUIRE(text != NULL);
+
        (void)next_token(lex, text); /* skip command name */
 
        ptr = next_token(lex, text);
@@ -12606,6 +12626,8 @@ named_server_tsiglist(named_server_t *server, isc_buffer_t **text) {
        dns_view_t *view;
        unsigned int foundkeys = 0;
 
+       REQUIRE(text != NULL);
+
        for (view = ISC_LIST_HEAD(server->viewlist); view != NULL;
             view = ISC_LIST_NEXT(view, link))
        {
@@ -12650,6 +12672,8 @@ named_server_rekey(named_server_t *server, isc_lex_t *lex,
        bool fullsign = false;
        char *ptr;
 
+       REQUIRE(text != NULL);
+
        ptr = next_token(lex, text);
        if (ptr == NULL) {
                return (ISC_R_UNEXPECTEDEND);
@@ -12659,6 +12683,8 @@ named_server_rekey(named_server_t *server, isc_lex_t *lex,
                fullsign = true;
        }
 
+       REQUIRE(text != NULL);
+
        result = zone_from_args(server, lex, NULL, &zone, NULL, text, false);
        if (result != ISC_R_SUCCESS) {
                return (result);
@@ -12731,6 +12757,8 @@ named_server_sync(named_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
        const char *vname, *sep, *arg;
        bool cleanup = false;
 
+       REQUIRE(text != NULL);
+
        (void)next_token(lex, text);
 
        arg = next_token(lex, text);
@@ -12740,6 +12768,8 @@ named_server_sync(named_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
                arg = next_token(lex, text);
        }
 
+       REQUIRE(text != NULL);
+
        result = zone_from_args(server, lex, arg, &zone, NULL, text, false);
        if (result != ISC_R_SUCCESS) {
                return (result);
@@ -12810,6 +12840,8 @@ named_server_freeze(named_server_t *server, bool freeze, isc_lex_t *lex,
        bool frozen;
        const char *msg = NULL;
 
+       REQUIRE(text != NULL);
+
        result = zone_from_args(server, lex, NULL, &mayberaw, NULL, text, true);
        if (result != ISC_R_SUCCESS) {
                return (result);
@@ -12926,6 +12958,8 @@ named_server_freeze(named_server_t *server, bool freeze, isc_lex_t *lex,
  */
 isc_result_t
 named_smf_add_message(isc_buffer_t **text) {
+       REQUIRE(text != NULL);
+
        return (putstr(text, "use svcadm(1M) to manage named"));
 }
 #endif /* HAVE_LIBSCF */
@@ -14199,6 +14233,8 @@ named_server_changezone(named_server_t *server, char *command,
        dns_fixedname_t fname;
        dns_name_t *dnsname;
 
+       REQUIRE(text != NULL);
+
        if (strncasecmp(command, "add", 3) == 0) {
                addzone = true;
        } else {
@@ -14474,6 +14510,8 @@ named_server_delzone(named_server_t *server, isc_lex_t *lex,
        isc_event_t *dzevent = NULL;
        isc_task_t *task = NULL;
 
+       REQUIRE(text != NULL);
+
        /* Skip the command name. */
        ptr = next_token(lex, text);
        if (ptr == NULL) {
@@ -14688,6 +14726,8 @@ named_server_showzone(named_server_t *server, isc_lex_t *lex,
        bool added, redirect;
        ns_dzarg_t dzarg;
 
+       REQUIRE(text != NULL);
+
        /* Parse parameters */
        CHECK(zone_from_args(server, lex, NULL, &zone, zonename, text, true));
        if (zone == NULL) {
@@ -14823,6 +14863,8 @@ named_server_signing(named_server_t *server, isc_lex_t *lex,
        const char *ptr;
        size_t n;
 
+       REQUIRE(text != NULL);
+
        dns_rdataset_init(&privset);
 
        /* Skip the command name. */
@@ -15053,6 +15095,8 @@ named_server_dnssec(named_server_t *server, isc_lex_t *lex,
        dns_db_t *db = NULL;
        dns_dbversion_t *version = NULL;
 
+       REQUIRE(text != NULL);
+
        /* Skip the command name. */
        ptr = next_token(lex, text);
        if (ptr == NULL) {
@@ -15393,6 +15437,8 @@ named_server_zonestatus(named_server_t *server, isc_lex_t *lex,
        char **incfiles = NULL;
        int nfiles = 0;
 
+       REQUIRE(text != NULL);
+
        isc_time_settoepoch(&loadtime);
        isc_time_settoepoch(&refreshtime);
        isc_time_settoepoch(&expiretime);
@@ -15659,6 +15705,8 @@ named_server_nta(named_server_t *server, isc_lex_t *lex, bool readonly,
        dns_rdataclass_t rdclass = dns_rdataclass_in;
        bool first = true;
 
+       REQUIRE(text != NULL);
+
        UNUSED(force);
 
        fname = dns_fixedname_initname(&fn);
@@ -16212,6 +16260,8 @@ named_server_mkeys(named_server_t *server, isc_lex_t *lex,
        bool found = false;
        bool first = true;
 
+       REQUIRE(text != NULL);
+
        /* Skip rndc command name */
        cmd = next_token(lex, text);
        if (cmd == NULL) {
@@ -16331,6 +16381,8 @@ named_server_dnstap(named_server_t *server, isc_lex_t *lex,
        bool reopen = false;
        int backups = 0;
 
+       REQUIRE(text != NULL);
+
        if (server->dtenv == NULL) {
                return (ISC_R_NOTFOUND);
        }
@@ -16485,6 +16537,8 @@ named_server_servestale(named_server_t *server, isc_lex_t *lex,
        isc_result_t result = ISC_R_SUCCESS;
        bool exclusive = false;
 
+       REQUIRE(text != NULL);
+
        /* Skip the command name. */
        ptr = next_token(lex, text);
        if (ptr == NULL) {