On Mon, Sep 07, 2015 at 10:53:06AM +0100, Emil Velikov wrote: > As going through the modetest patches for atomic support I've noticed > that if we pass NULL for the drmModeAtomicReqPtr argument we'll crash. > > So let's handle things appropriately if the user forgot to check the > return value of drmModeAtomicAlloc and drmModeAtomicDuplicate or made a > typo somewhere along the way. I'm not sure hand-holding the user to such an extent is actually useful. OTOH I guess one NULL check per function call isn't all that expensive either. > > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Cc: Rob Clark <robclark@xxxxxxxxxxxxxxx> > Cc: Daniel Stone <daniels@xxxxxxxxxxxxx> > Signed-off-by: Emil Velikov <emil.l.velikov@xxxxxxxxx> > --- > xf86drmMode.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/xf86drmMode.c b/xf86drmMode.c > index 23800dd..ab6b519 100644 > --- a/xf86drmMode.c > +++ b/xf86drmMode.c > @@ -1189,6 +1189,9 @@ drmModeAtomicReqPtr drmModeAtomicDuplicate(drmModeAtomicReqPtr old) > { > drmModeAtomicReqPtr new; > > + if (!old) > + return NULL; > + > new = drmMalloc(sizeof *new); > if (!new) > return NULL; > @@ -1213,6 +1216,9 @@ drmModeAtomicReqPtr drmModeAtomicDuplicate(drmModeAtomicReqPtr old) > > int drmModeAtomicMerge(drmModeAtomicReqPtr base, drmModeAtomicReqPtr augment) > { > + if (!base) > + return -EINVAL; > + > if (!augment || augment->cursor == 0) > return 0; > > @@ -1239,12 +1245,15 @@ int drmModeAtomicMerge(drmModeAtomicReqPtr base, drmModeAtomicReqPtr augment) > > int drmModeAtomicGetCursor(drmModeAtomicReqPtr req) > { > + if (!req) > + return -EINVAL; > return req->cursor; > } > > void drmModeAtomicSetCursor(drmModeAtomicReqPtr req, int cursor) > { > - req->cursor = cursor; > + if (req) > + req->cursor = cursor; > } > > int drmModeAtomicAddProperty(drmModeAtomicReqPtr req, > @@ -1252,6 +1261,9 @@ int drmModeAtomicAddProperty(drmModeAtomicReqPtr req, > uint32_t property_id, > uint64_t value) > { > + if (!req) > + return -EINVAL; > + > if (req->cursor >= req->size_items) { > drmModeAtomicReqItemPtr new; > > @@ -1309,6 +1321,9 @@ int drmModeAtomicCommit(int fd, drmModeAtomicReqPtr req, uint32_t flags, > int obj_idx = -1; > int ret = -1; > > + if (!req) > + return -EINVAL; > + > if (req->cursor == 0) > return 0; > > -- > 2.5.0 -- Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel