Restrict transport list to 1 entry for each valid transport

This commit is contained in:
Sara Dickinson 2015-08-12 13:24:08 +01:00
parent cb1dff1ac7
commit dbad8a9003
1 changed files with 11 additions and 7 deletions

View File

@ -1217,16 +1217,20 @@ getdns_set_base_dns_transports(
if (!context || transport_count == 0 || transports == NULL) if (!context || transport_count == 0 || transports == NULL)
return GETDNS_RETURN_INVALID_PARAMETER; return GETDNS_RETURN_INVALID_PARAMETER;
/* TODO: restrict the use of each transport to once -> /* Check for valid transports and that they are used only once*/
sane list and correct max size for array*/ int u=0,t=0,l=0,s=0;
for(i=0; i<transport_count; i++) for(i=0; i<transport_count; i++)
{ {
if( transports[i] != GETDNS_TRANSPORT_UDP switch (transports[i]) {
&& transports[i] != GETDNS_TRANSPORT_TCP case GETDNS_TRANSPORT_UDP: u++; break;
&& transports[i] != GETDNS_TRANSPORT_TLS case GETDNS_TRANSPORT_TCP: t++; break;
&& transports[i] != GETDNS_TRANSPORT_STARTTLS) case GETDNS_TRANSPORT_TLS: l++; break;
return GETDNS_RETURN_INVALID_PARAMETER; case GETDNS_TRANSPORT_STARTTLS: s++; break;
default: return GETDNS_RETURN_INVALID_PARAMETER;
} }
}
if ( u>1 || t>1 || l>1 || s>1)
return GETDNS_RETURN_INVALID_PARAMETER;
if (!(new_transports = GETDNS_XMALLOC(context->my_mf, if (!(new_transports = GETDNS_XMALLOC(context->my_mf,
getdns_transport_list_t, transport_count))) getdns_transport_list_t, transport_count)))