diff options
author | Santiago Carot-Nemesio <sancane@gmail.com> | 2011-12-09 19:19:02 +0100 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2011-12-15 13:24:21 +0200 |
commit | 726dc13a33ef1a73854521f9306536904b48eb93 (patch) | |
tree | e7d855f438961668f59a4d3be874f1cecbd712be /thermometer | |
parent | 3ff4427f399f13e126185e9e429752a2fc524a9b (diff) | |
download | bluez-726dc13a33ef1a73854521f9306536904b48eb93.tar.gz |
thermometer: Fix possible NULL pointer deference
This patch checks the GATT server is connected before doing any GATT
transaction. If it isn't, we abort the operation to avoid the NULL
pointer deference problem.
Diffstat (limited to 'thermometer')
-rw-r--r-- | thermometer/thermometer.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/thermometer/thermometer.c b/thermometer/thermometer.c index bc05edc4a..e78d250ec 100644 --- a/thermometer/thermometer.c +++ b/thermometer/thermometer.c @@ -598,6 +598,9 @@ static DBusMessage *write_attr_interval(struct thermometer *t, DBusMessage *msg, struct characteristic *ch; guint8 atval[2]; + if (t->attrib == NULL) + return btd_error_not_connected(msg); + ch = get_characteristic(t, MEASUREMENT_INTERVAL_UUID); if (ch == NULL) return btd_error_not_available(msg); @@ -671,6 +674,9 @@ static void enable_final_measurement(struct thermometer *t) uint8_t atval[2]; gchar *msg; + if (t->attrib == NULL) + return; + ch = get_characteristic(t, TEMPERATURE_MEASUREMENT_UUID); if (ch == NULL) { DBG("Temperature measurement characteristic not found"); @@ -698,6 +704,9 @@ static void enable_intermediate_measurement(struct thermometer *t) uint8_t atval[2]; gchar *msg; + if (t->attrib == NULL) + return; + ch = get_characteristic(t, INTERMEDIATE_TEMPERATURE_UUID); if (ch == NULL) { DBG("Intermediate measurement characteristic not found"); @@ -725,6 +734,9 @@ static void disable_final_measurement(struct thermometer *t) uint8_t atval[2]; gchar *msg; + if (t->attrib == NULL) + return; + ch = get_characteristic(t, TEMPERATURE_MEASUREMENT_UUID); if (ch == NULL) { DBG("Temperature measurement characteristic not found"); @@ -752,6 +764,9 @@ static void disable_intermediate_measurement(struct thermometer *t) uint8_t atval[2]; gchar *msg; + if (t->attrib == NULL) + return; + ch = get_characteristic(t, INTERMEDIATE_TEMPERATURE_UUID); if (ch == NULL) { DBG("Intermediate measurement characteristic not found"); |