From: Benjamin Otte Date: Tue, 12 Feb 2013 18:28:41 +0000 (+0100) Subject: x11: Move length checking into return_if_fail() macro X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=b36b89151e71860416ae6917690815175df3da9d;hp=e3206b9de4d1ff5cd2f4b678c095993716284a67;p=~andy%2Fgtk x11: Move length checking into return_if_fail() macro --- diff --git a/gdk/x11/xsettings-client.c b/gdk/x11/xsettings-client.c index a54dbea8b..7fff6b959 100644 --- a/gdk/x11/xsettings-client.c +++ b/gdk/x11/xsettings-client.c @@ -112,14 +112,18 @@ notify_changes (XSettingsClient *client, #define BYTES_LEFT(buffer) ((buffer)->data + (buffer)->len - (buffer)->pos) +#define return_if_fail_bytes(buffer, n_bytes) G_STMT_START{ \ + if (BYTES_LEFT (buffer) < (n_bytes)) \ + return XSETTINGS_ACCESS; \ +}G_STMT_END + static XSettingsResult fetch_card16 (XSettingsBuffer *buffer, CARD16 *result) { CARD16 x; - if (BYTES_LEFT (buffer) < 2) - return XSETTINGS_ACCESS; + return_if_fail_bytes (buffer, 2); x = *(CARD16 *)buffer->pos; buffer->pos += 2; @@ -152,8 +156,7 @@ fetch_card32 (XSettingsBuffer *buffer, { CARD32 x; - if (BYTES_LEFT (buffer) < 4) - return XSETTINGS_ACCESS; + return_if_fail_bytes (buffer, 4); x = *(CARD32 *)buffer->pos; buffer->pos += 4; @@ -170,8 +173,7 @@ static XSettingsResult fetch_card8 (XSettingsBuffer *buffer, CARD8 *result) { - if (BYTES_LEFT (buffer) < 1) - return XSETTINGS_ACCESS; + return_if_fail_bytes (buffer, 1); *result = *(CARD8 *)buffer->pos; buffer->pos += 1; @@ -189,10 +191,11 @@ fetch_string (XSettingsBuffer *buffer, guint pad_len; pad_len = XSETTINGS_PAD (length, 4); - if (pad_len < length /* guard against overflow */ - || BYTES_LEFT (buffer) < pad_len) + if (pad_len < length) /* guard against overflow */ return XSETTINGS_ACCESS; + return_if_fail_bytes (buffer, pad_len); + *result = g_strndup ((char *) buffer->pos, length); buffer->pos += pad_len;