config_odev_add_attribute*: Check for right attribute type
Don't allow setting string attributes to integers and vice versa. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
25eca7ce35
commit
4dbb641bb2
|
@ -172,12 +172,38 @@ config_odev_find_or_add_attribute(struct OdevAttributes *attribs, int attrib)
|
|||
return oa;
|
||||
}
|
||||
|
||||
static int config_odev_get_attribute_type(int attrib)
|
||||
{
|
||||
switch (attrib) {
|
||||
case ODEV_ATTRIB_PATH:
|
||||
case ODEV_ATTRIB_SYSPATH:
|
||||
case ODEV_ATTRIB_BUSID:
|
||||
return ODEV_ATTRIB_STRING;
|
||||
case ODEV_ATTRIB_FD:
|
||||
case ODEV_ATTRIB_MAJOR:
|
||||
case ODEV_ATTRIB_MINOR:
|
||||
return ODEV_ATTRIB_INT;
|
||||
case ODEV_ATTRIB_DRIVER:
|
||||
return ODEV_ATTRIB_STRING;
|
||||
default:
|
||||
LogMessage(X_ERROR, "Error %s called for unknown attribute %d\n",
|
||||
__func__, attrib);
|
||||
return ODEV_ATTRIB_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
Bool
|
||||
config_odev_add_attribute(struct OdevAttributes *attribs, int attrib,
|
||||
const char *attrib_name)
|
||||
{
|
||||
struct OdevAttribute *oa;
|
||||
|
||||
if (config_odev_get_attribute_type(attrib) != ODEV_ATTRIB_STRING) {
|
||||
LogMessage(X_ERROR, "Error %s called for non string attrib %d\n",
|
||||
__func__, attrib);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
oa = config_odev_find_or_add_attribute(attribs, attrib);
|
||||
free(oa->attrib_name);
|
||||
oa->attrib_name = XNFstrdup(attrib_name);
|
||||
|
@ -191,6 +217,12 @@ config_odev_add_int_attribute(struct OdevAttributes *attribs, int attrib,
|
|||
{
|
||||
struct OdevAttribute *oa;
|
||||
|
||||
if (config_odev_get_attribute_type(attrib) != ODEV_ATTRIB_INT) {
|
||||
LogMessage(X_ERROR, "Error %s called for non integer attrib %d\n",
|
||||
__func__, attrib);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
oa = config_odev_find_or_add_attribute(attribs, attrib);
|
||||
oa->attrib_value = attrib_value;
|
||||
oa->attrib_type = ODEV_ATTRIB_INT;
|
||||
|
|
|
@ -32,7 +32,7 @@ extern _X_EXPORT void config_pre_init(void);
|
|||
extern _X_EXPORT void config_init(void);
|
||||
extern _X_EXPORT void config_fini(void);
|
||||
|
||||
enum { ODEV_ATTRIB_STRING, ODEV_ATTRIB_INT };
|
||||
enum { ODEV_ATTRIB_UNKNOWN = -1, ODEV_ATTRIB_STRING = 0, ODEV_ATTRIB_INT };
|
||||
|
||||
struct OdevAttribute {
|
||||
struct xorg_list member;
|
||||
|
|
Loading…
Reference in New Issue