connection: Check object types in message parameters
authorBenjamin Franzke <benjaminfranzke@googlemail.com>
Mon, 31 Oct 2011 10:06:35 +0000 (11:06 +0100)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 31 Oct 2011 15:13:13 +0000 (11:13 -0400)
src/connection.c

index 1963314..a10508d 100644 (file)
@@ -594,6 +594,16 @@ wl_connection_demarshal(struct wl_connection *connection,
                                goto err;
                        }
 
+                       if (*object != NULL && message->types[i-2] != NULL &&
+                           (*object)->interface != message->types[i-2]) {
+                               printf("invalid object (%d), type (%s), "
+                                       "message %s(%s)\n",
+                                      *p, (*object)->interface->name,
+                                      message->name, message->signature);
+                               errno = EINVAL;
+                               goto err;
+                       }
+
                        p++;
                        break;
                case 'n':