acd: avoid alloca() inside an unbounded loop

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

View file

@ -93,7 +93,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)
@ -183,6 +196,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];
gboolean check_probing_done = FALSE;
switch (event->event) {
@ -225,7 +239,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;
}