core: Prevent crash on back-end misbehaviour
authorJens Georg <mail@jensge.org>
Mon, 9 Jan 2012 18:11:12 +0000 (19:11 +0100)
committerJens Georg <mail@jensge.org>
Wed, 18 Jan 2012 17:02:31 +0000 (18:02 +0100)
If the backend declares the OCMFlag.UPLOAD in a non-writable container,
bail out instead of crashing.

src/rygel/rygel-item-creator.vala

index 51b9040..4f87616 100644 (file)
@@ -286,7 +286,8 @@ internal class Rygel.ItemCreator: GLib.Object, Rygel.StateMachine {
         if (media_object == null || !(media_object is MediaContainer)) {
             throw new ContentDirectoryError.NO_SUCH_OBJECT
                                         (_("No such object"));
-        } else if (!(OCMFlags.UPLOAD in media_object.ocm_flags)) {
+        } else if (!(OCMFlags.UPLOAD in media_object.ocm_flags) ||
+                   !(media_object is WritableContainer)) {
             throw new ContentDirectoryError.RESTRICTED_PARENT
                                         (_("Object creation in %s not allowed"),
                                         media_object.id);