Skip to content

Commit 350f396

Browse files
JianyuWang0623xiaoxiang781216
authored andcommitted
drivers/sensors/gnss: Fix integer overflow error
CID 1309501: (#1 of 1): Overflow constant (INTEGER_OVERFLOW) overflow_const: Expression upper->crefs, which is equal to 255, where enable ? 1 : -1 is known to be equal to -1, overflows the type that receives it, an unsigned integer 8 bits wide. Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
1 parent 7e0e4de commit 350f396

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

drivers/sensors/gnss_uorb.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,14 +168,21 @@ static int gnss_activate(FAR struct sensor_lowerhalf_s *lower,
168168
int ret = OK;
169169

170170
nxmutex_lock(&upper->lock);
171-
if ((upper->crefs == 0 && enable) || (upper->crefs == 1 && !enable))
171+
if ((upper->crefs == 255 && enable) || (upper->crefs == 0 && !enable))
172172
{
173-
ret = upper->lower->ops->activate(upper->lower, filep, enable);
173+
ret = -EINVAL;
174174
}
175-
176-
if (ret >= 0)
175+
else
177176
{
178-
upper->crefs += enable ? 1 : -1;
177+
if ((upper->crefs == 0 && enable) || (upper->crefs == 1 && !enable))
178+
{
179+
ret = upper->lower->ops->activate(upper->lower, filep, enable);
180+
}
181+
182+
if (ret >= 0)
183+
{
184+
upper->crefs += enable ? 1 : -1;
185+
}
179186
}
180187

181188
nxmutex_unlock(&upper->lock);

0 commit comments

Comments
 (0)