Merge lp:~ricmm/platform-api/guards-for-null-sensors into lp:platform-api

Proposed by Ricardo Mendoza
Status: Needs review
Proposed branch: lp:~ricmm/platform-api/guards-for-null-sensors
Merge into: lp:platform-api
Diff against target: 295 lines (+87/-2)
1 file modified
android/default/default_ubuntu_application_sensor.cpp (+87/-2)
To merge this branch: bzr merge lp:~ricmm/platform-api/guards-for-null-sensors
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Ubuntu Phablet Team Pending
Review via email: mp+167173@code.launchpad.net

Commit message

Add guards for null sensors (hardware not present)

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)

Unmerged revisions

62. By Ricardo Mendoza

Add guards for non-existant sensor hardware, prevent segfaults

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'android/default/default_ubuntu_application_sensor.cpp'
2--- android/default/default_ubuntu_application_sensor.cpp 2013-05-30 02:03:42 +0000
3+++ android/default/default_ubuntu_application_sensor.cpp 2013-06-03 22:53:26 +0000
4@@ -158,8 +158,9 @@
5 ua_sensors_proximity_enable(
6 UASensorsProximity* sensor)
7 {
8- ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
9-
10+ if (sensor == NULL)
11+ return U_STATUS_ERROR;
12+
13 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
14 int ret = s->enable();
15
16@@ -173,6 +174,9 @@
17 ua_sensors_proximity_disable(
18 UASensorsProximity* sensor)
19 {
20+ if (sensor == NULL)
21+ return U_STATUS_ERROR;
22+
23 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
24
25 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
26@@ -185,6 +189,9 @@
27 ua_sensors_proximity_get_min_delay(
28 UASensorsProximity* sensor)
29 {
30+ if (sensor == NULL)
31+ return 0;
32+
33 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
34 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
35 return toHz(s->min_delay());
36@@ -194,6 +201,9 @@
37 ua_sensors_proximity_get_min_value(
38 UASensorsProximity* sensor)
39 {
40+ if (sensor == NULL)
41+ return -1;
42+
43 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
44 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
45 return s->min_value();
46@@ -203,6 +213,9 @@
47 ua_sensors_proximity_get_max_value(
48 UASensorsProximity* sensor)
49 {
50+ if (sensor == NULL)
51+ return -1;
52+
53 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
54 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
55 return s->max_value();
56@@ -212,6 +225,9 @@
57 ua_sensors_proximity_get_resolution(
58 UASensorsProximity* sensor)
59 {
60+ if (sensor == NULL)
61+ return -1;
62+
63 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
64 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
65 return s->resolution();
66@@ -223,6 +239,9 @@
67 on_proximity_event_cb cb,
68 void *ctx)
69 {
70+ if (sensor == NULL)
71+ return;
72+
73 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
74 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
75
76@@ -240,6 +259,9 @@
77 uas_proximity_event_get_timestamp(
78 UASProximityEvent* event)
79 {
80+ if (event == NULL)
81+ return 0;
82+
83 auto ev = static_cast<Holder<ubuntu::application::sensors::ProximityEvent::Ptr>*>(event);
84
85 return ev->value->get_timestamp();
86@@ -249,6 +271,9 @@
87 uas_proximity_event_get_distance(
88 UASProximityEvent* event)
89 {
90+ if (event == NULL)
91+ return U_PROXIMITY_FAR;
92+
93 auto ev = static_cast<Holder<ubuntu::application::sensors::ProximityEvent::Ptr>*>(event);
94
95 if (ev->value->get_distance() == proximity->max_value())
96@@ -276,6 +301,9 @@
97 ua_sensors_light_enable(
98 UASensorsLight* sensor)
99 {
100+ if (sensor == NULL)
101+ return U_STATUS_ERROR;
102+
103 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
104 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
105
106@@ -288,6 +316,9 @@
107 ua_sensors_light_disable(
108 UASensorsLight* sensor)
109 {
110+ if (sensor == NULL)
111+ return U_STATUS_ERROR;
112+
113 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
114 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
115 s->disable();
116@@ -299,6 +330,9 @@
117 ua_sensors_light_get_min_delay(
118 UASensorsLight* sensor)
119 {
120+ if (sensor == NULL)
121+ return 0;
122+
123 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
124 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
125 return toHz(s->min_delay());
126@@ -308,6 +342,9 @@
127 ua_sensors_light_get_min_value(
128 UASensorsLight* sensor)
129 {
130+ if (sensor == NULL)
131+ return -1;
132+
133 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
134 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
135 return s->min_value();
136@@ -317,6 +354,9 @@
137 ua_sensors_light_get_max_value(
138 UASensorsLight* sensor)
139 {
140+ if (sensor == NULL)
141+ return -1;
142+
143 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
144 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
145 return s->max_value();
146@@ -326,6 +366,9 @@
147 ua_sensors_light_get_resolution(
148 UASensorsLight* sensor)
149 {
150+ if (sensor == NULL)
151+ return -1;
152+
153 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
154 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
155 return s->resolution();
156@@ -337,6 +380,9 @@
157 on_light_event_cb cb,
158 void *ctx)
159 {
160+ if (sensor == NULL)
161+ return;
162+
163 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
164 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
165
166@@ -354,6 +400,9 @@
167 uas_light_event_get_timestamp(
168 UASLightEvent* event)
169 {
170+ if (event == NULL)
171+ return 0;
172+
173 auto ev = static_cast<Holder<ubuntu::application::sensors::LightEvent::Ptr>*>(event);
174 return ev->value->get_timestamp();
175 }
176@@ -362,6 +411,9 @@
177 uas_light_event_get_light(
178 UASLightEvent* event)
179 {
180+ if (event == NULL)
181+ return 0;
182+
183 auto ev = static_cast<Holder<ubuntu::application::sensors::LightEvent::Ptr>*>(event);
184 return ev->value->get_light();
185 }
186@@ -385,6 +437,9 @@
187 ua_sensors_accelerometer_enable(
188 UASensorsAccelerometer* sensor)
189 {
190+ if (sensor == NULL)
191+ return U_STATUS_ERROR;
192+
193 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
194 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
195
196@@ -397,6 +452,9 @@
197 ua_sensors_accelerometer_disable(
198 UASensorsAccelerometer* sensor)
199 {
200+ if (sensor == NULL)
201+ return U_STATUS_ERROR;
202+
203 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
204 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
205 s->disable();
206@@ -408,6 +466,9 @@
207 ua_sensors_accelerometer_get_min_delay(
208 UASensorsAccelerometer* sensor)
209 {
210+ if (sensor == NULL)
211+ return 0;
212+
213 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
214 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
215 return toHz(s->min_delay());
216@@ -417,6 +478,9 @@
217 ua_sensors_accelerometer_get_min_value(
218 UASensorsAccelerometer* sensor)
219 {
220+ if (sensor == NULL)
221+ return -1;
222+
223 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
224 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
225 return s->min_value();
226@@ -426,6 +490,9 @@
227 ua_sensors_accelerometer_get_max_value(
228 UASensorsAccelerometer* sensor)
229 {
230+ if (sensor == NULL)
231+ return -1;
232+
233 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
234 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
235 return s->max_value();
236@@ -435,6 +502,9 @@
237 ua_sensors_accelerometer_get_resolution(
238 UASensorsAccelerometer* sensor)
239 {
240+ if (sensor == NULL)
241+ return -1;
242+
243 ALOGI("%s():%d", __PRETTY_FUNCTION__, __LINE__);
244 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
245 return s->resolution();
246@@ -446,6 +516,9 @@
247 on_accelerometer_event_cb cb,
248 void *ctx)
249 {
250+ if (sensor == NULL)
251+ return;
252+
253 auto s = static_cast<ubuntu::application::sensors::Sensor*>(sensor);
254
255 SensorListener<ubuntu::application::sensors::sensor_type_accelerometer>* sl
256@@ -462,6 +535,9 @@
257 uas_accelerometer_event_get_timestamp(
258 UASAccelerometerEvent* event)
259 {
260+ if (event == NULL)
261+ return 0;
262+
263 auto ev = static_cast<Holder<ubuntu::application::sensors::AccelerometerEvent::Ptr>*>(event);
264 return ev->value->get_timestamp();
265 }
266@@ -470,6 +546,9 @@
267 uas_accelerometer_event_get_acceleration_x(
268 UASAccelerometerEvent* event)
269 {
270+ if (event == NULL)
271+ return 0;
272+
273 auto ev = static_cast<Holder<ubuntu::application::sensors::AccelerometerEvent::Ptr>*>(event);
274 return ev->value->get_x();
275 }
276@@ -478,6 +557,9 @@
277 uas_accelerometer_event_get_acceleration_y(
278 UASAccelerometerEvent* event)
279 {
280+ if (event == NULL)
281+ return 0;
282+
283 auto ev = static_cast<Holder<ubuntu::application::sensors::AccelerometerEvent::Ptr>*>(event);
284 return ev->value->get_y();
285 }
286@@ -486,6 +568,9 @@
287 uas_accelerometer_event_get_acceleration_z(
288 UASAccelerometerEvent* event)
289 {
290+ if (event == NULL)
291+ return 0;
292+
293 auto ev = static_cast<Holder<ubuntu::application::sensors::AccelerometerEvent::Ptr>*>(event);
294 return ev->value->get_z();
295 }

Subscribers

People subscribed via source and target branches