acd: avoid alloca() inside an unbounded loop

(cherry picked from commit b447c80ad8)
(cherry picked from commit ecb9e0e3df)
This commit is contained in:
Thomas Haller 2020-05-06 22:13:06 +02:00
parent b5a66b88b3
commit 198e233b91
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -82,7 +82,20 @@ _acd_event_to_string (unsigned int event)
return NULL;
}
#define acd_event_to_string_a(event) NM_UTILS_LOOKUP_STR_A (_acd_event_to_string, event)
#define ACD_EVENT_TO_STRING_BUF_SIZE 50
static const char *
_acd_event_to_string_buf (unsigned event, char buffer[ACD_EVENT_TO_STRING_BUF_SIZE])
{
const char *s;
s = _acd_event_to_string (event);
if (s)
return s;
g_snprintf (buffer, ACD_EVENT_TO_STRING_BUF_SIZE, "(%u)", event);
return buffer;
}
static const char *
acd_error_to_string (int error)
@ -171,6 +184,7 @@ acd_event (GIOChannel *source, GIOCondition condition, gpointer data)
while ( !n_acd_pop_event (self->acd, &event)
&& event) {
char to_string_buffer[ACD_EVENT_TO_STRING_BUF_SIZE];
gs_free char *hwaddr_str = NULL;
gboolean check_probing_done = FALSE;
@ -214,7 +228,7 @@ acd_event (GIOChannel *source, GIOCondition condition, gpointer data)
nm_platform_link_get_name (NM_PLATFORM_GET, self->ifindex));
break;
default:
_LOGD ("unhandled event '%s'", acd_event_to_string_a (event->event));
_LOGD ("unhandled event '%s'", _acd_event_to_string_buf (event->event, to_string_buffer));
break;
}