aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-07-29 21:02:17 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-07-29 23:48:11 +0200
commit3b54ee2f16c6118db4e7164d81a77be4fc3300e6 (patch)
tree223ae875a1fa3824e393c3fa97bcd7902c76740b
parent4932334a3205c913e61587518539a44a0941a2ef (diff)
downloadsparse-3b54ee2f16c6118db4e7164d81a77be4fc3300e6.tar.gz
fix stream_prev() for invalid (negative) stream
Now that the parent stream is stored as a position, the validity of a stream can't anymore be tested by checking if its number is non-negative because inside a struct position stream number are stored as an unsigned (and changing it to signed would halve the maximum number of stream). So, add a check against input_stream_nr before returning the previous stream. Fixes: 4c6cbe557c48205f9b3d2aae4c166cd66446b240 Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--tokenize.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/tokenize.c b/tokenize.c
index d68fbcd8..ca842f52 100644
--- a/tokenize.c
+++ b/tokenize.c
@@ -66,7 +66,10 @@ int stream_prev(int stream)
{
if (stream < 0 || stream > input_stream_nr)
return -1;
- return input_streams[stream].pos.stream;
+ stream = input_streams[stream].pos.stream;
+ if (stream > input_stream_nr)
+ return -1;
+ return stream;
}
static struct position stream_pos(stream_t *stream)