Author: file
Date: Fri Mar  6 12:24:29 2015
New Revision: 432524

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432524
Log:
Perform sanity checks on values passed into the resolve functions.

Modified:
    team/group/dns/main/dns_core.c

Modified: team/group/dns/main/dns_core.c
URL: 
http://svnview.digium.com/svn/asterisk/team/group/dns/main/dns_core.c?view=diff&rev=432524&r1=432523&r2=432524
==============================================================================
--- team/group/dns/main/dns_core.c (original)
+++ team/group/dns/main/dns_core.c Fri Mar  6 12:24:29 2015
@@ -144,7 +144,27 @@
 {
        struct ast_dns_query *query;
 
-       if (ast_strlen_zero(name) || !callback) {
+       if (ast_strlen_zero(name)) {
+               ast_log(LOG_ERROR, "Could not perform asynchronous resolution, 
no name provided\n");
+               return NULL;
+       } else if (rr_type > ns_t_max) {
+               ast_log(LOG_ERROR, "Could not perform asynchronous resolution, 
resource record type '%d' exceeds maximum\n",
+                       rr_type);
+               return NULL;
+       } else if (rr_type < 0) {
+               ast_log(LOG_ERROR, "Could not perform asynchronous resolution, 
invalid resource record type '%d'\n",
+                       rr_type);
+               return NULL;
+       } else if (rr_class > ns_c_max) {
+               ast_log(LOG_ERROR, "Could not perform asynchronous resolution, 
resource record class '%d' exceeds maximum\n",
+                       rr_class);
+               return NULL;
+       } else if (rr_class < 0) {
+               ast_log(LOG_ERROR, "Could not perform asynchronous resolution, 
invalid resource class '%d'\n",
+                       rr_class);
+               return NULL;
+       } else if (!callback) {
+               ast_log(LOG_ERROR, "Could not perform asynchronous resolution, 
no callback provided\n");
                return NULL;
        }
 
@@ -226,6 +246,27 @@
        struct dns_synchronous_resolve *synchronous;
        struct ast_dns_query *query;
 
+       if (ast_strlen_zero(name)) {
+               ast_log(LOG_ERROR, "Could not perform synchronous resolution, 
no name provided\n");
+               return -1;
+       } else if (rr_type > ns_t_max) {
+               ast_log(LOG_ERROR, "Could not perform synchronous resolution, 
resource record type '%d' exceeds maximum\n",
+                       rr_type);
+               return -1;
+       } else if (rr_type < 0) {
+               ast_log(LOG_ERROR, "Could not perform synchronous resolution, 
invalid resource record type '%d'\n",
+                       rr_type);
+               return -1;
+       } else if (rr_class > ns_c_max) {
+               ast_log(LOG_ERROR, "Could not perform synchronous resolution, 
resource record class '%d' exceeds maximum\n",
+                       rr_class);
+               return -1;
+       } else if (rr_class < 0) {
+               ast_log(LOG_ERROR, "Could not perform synchronous resolution, 
invalid resource class '%d'\n",
+                       rr_class);
+               return -1;
+       }
+
        synchronous = ao2_alloc_options(sizeof(*synchronous), 
dns_synchronous_resolve_destroy, AO2_ALLOC_OPT_LOCK_NOLOCK);
        if (!synchronous) {
                return -1;


-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to