On Tue, Mar 11, 2014 at 12:01:22PM +0100, Hans de Goede wrote: > config_odev* functions are called in code-paths were we already use > XNF* functions in other places, so which are not oom safe already. > > Besides that oom is something which should simply never happen, so aborting > when it does is as good a response as any other. > > While switching to XNF functions also fixup an unchecked strdup case. > > Note the function prototypes are kept unchanged, as they are part of the > server ABI. > > Signed-off-by: Hans de Goede <[email protected]>
Reviewed-by: Peter Hutterer <[email protected]> for both Cheers, Peter > --- > config/config.c | 18 +++--------------- > hw/xfree86/common/xf86platformBus.h | 5 +++-- > include/hotplug.h | 3 +++ > 3 files changed, 9 insertions(+), 17 deletions(-) > > diff --git a/config/config.c b/config/config.c > index 46f2532..def7f16 100644 > --- a/config/config.c > +++ b/config/config.c > @@ -132,10 +132,7 @@ config_odev_allocate_attribute_list(void) > { > struct OdevAttributes *attriblist; > > - attriblist = malloc(sizeof(struct OdevAttributes)); > - if (!attriblist) > - return NULL; > - > + attriblist = XNFalloc(sizeof(struct OdevAttributes)); > xorg_list_init(&attriblist->list); > return attriblist; > } > @@ -168,10 +165,7 @@ config_odev_find_or_add_attribute(struct OdevAttributes > *attribs, int attrib) > if (oa) > return oa; > > - oa = calloc(1, sizeof(struct OdevAttribute)); > - if (!oa) > - return oa; > - > + oa = XNFcalloc(sizeof(struct OdevAttribute)); > oa->attrib_id = attrib; > xorg_list_append(&oa->member, &attribs->list); > > @@ -185,11 +179,8 @@ config_odev_add_attribute(struct OdevAttributes > *attribs, int attrib, > struct OdevAttribute *oa; > > oa = config_odev_find_or_add_attribute(attribs, attrib); > - if (!oa) > - return FALSE; > - > free(oa->attrib_name); > - oa->attrib_name = strdup(attrib_name); > + oa->attrib_name = XNFstrdup(attrib_name); > oa->attrib_type = ODEV_ATTRIB_STRING; > return TRUE; > } > @@ -201,9 +192,6 @@ config_odev_add_int_attribute(struct OdevAttributes > *attribs, int attrib, > struct OdevAttribute *oa; > > oa = config_odev_find_or_add_attribute(attribs, attrib); > - if (!oa) > - return FALSE; > - > oa->attrib_value = attrib_value; > oa->attrib_type = ODEV_ATTRIB_INT; > return TRUE; > diff --git a/hw/xfree86/common/xf86platformBus.h > b/hw/xfree86/common/xf86platformBus.h > index 78b5a5b..5dee4e0 100644 > --- a/hw/xfree86/common/xf86platformBus.h > +++ b/hw/xfree86/common/xf86platformBus.h > @@ -54,11 +54,12 @@ xf86_add_platform_device(struct OdevAttributes *attribs, > Bool unowned); > extern int > xf86_remove_platform_device(int dev_index); > extern Bool > +xf86_get_platform_device_unowned(int index); > +/* Note starting with xserver 1.16 these 2 functions never fail */ > +extern Bool > xf86_add_platform_device_attrib(int index, int attrib_id, char *attrib_str); > extern Bool > xf86_add_platform_device_int_attrib(int index, int attrib_id, int > attrib_value); > -extern Bool > -xf86_get_platform_device_unowned(int index); > > extern int > xf86platformAddDevice(int index); > diff --git a/include/hotplug.h b/include/hotplug.h > index 1d9364e..cefc164 100644 > --- a/include/hotplug.h > +++ b/include/hotplug.h > @@ -48,12 +48,14 @@ struct OdevAttributes { > struct xorg_list list; > }; > > +/* Note starting with xserver 1.16 this function never fails */ > struct OdevAttributes * > config_odev_allocate_attribute_list(void); > > void > config_odev_free_attribute_list(struct OdevAttributes *attribs); > > +/* Note starting with xserver 1.16 this function never fails */ > Bool > config_odev_add_attribute(struct OdevAttributes *attribs, int attrib, > const char *attrib_name); > @@ -61,6 +63,7 @@ config_odev_add_attribute(struct OdevAttributes *attribs, > int attrib, > char * > config_odev_get_attribute(struct OdevAttributes *attribs, int attrib_id); > > +/* Note starting with xserver 1.16 this function never fails */ > Bool > config_odev_add_int_attribute(struct OdevAttributes *attribs, int attrib, > int attrib_value); > -- > 1.9.0 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
