* data.
*/
-#define MAX_PROTOSTRING (64 * 11) /* Room for 64 10-chars proto names. */
+#define MAX_PROTOS 34
+#define MAX_PROTOSTRING (MAX_PROTOS * 11) /* Room for MAX_PROTOS number of
+ 10-chars proto names. */
ParameterError proto2num(const char * const *val, char **ostr, const char *str)
{
- const char **protoset;
struct dynbuf obuf;
size_t proto;
CURLcode result = CURLE_OK;
+ const char *protoset[MAX_PROTOS + 1];
- curlx_dyn_init(&obuf, MAX_PROTOSTRING);
-
- protoset = curlx_malloc((proto_count + 1) * sizeof(*protoset));
- if(!protoset)
+ DEBUGASSERT(proto_count <= MAX_PROTOS);
+ if(proto_count > MAX_PROTOS) /* if case of surprises */
return PARAM_NO_MEM;
+ curlx_dyn_init(&obuf, MAX_PROTOSTRING);
+
/* Preset protocol set with default values. */
protoset[0] = NULL;
for(; *val; val++) {
for(proto = 0; protoset[proto] && !result; proto++)
result = curlx_dyn_addf(&obuf, "%s%s", curlx_dyn_len(&obuf) ? "," : "",
protoset[proto]);
- curlx_free((char *)protoset);
if(result)
return PARAM_NO_MEM;
if(!curlx_dyn_len(&obuf)) {