]> Pileus Git - ~andy/gtk/commitdiff
x11: Move length checking into return_if_fail() macro
authorBenjamin Otte <otte@redhat.com>
Tue, 12 Feb 2013 18:28:41 +0000 (19:28 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 19 Feb 2013 13:33:36 +0000 (14:33 +0100)
gdk/x11/xsettings-client.c

index a54dbea8b5150efaa6ea7476990c56594080e25d..7fff6b959dd65e61555553c53f228236b727237a 100644 (file)
@@ -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;