summary refs log tree commit diff
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2015-12-10 08:59:34 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2016-06-06 19:55:24 +0800
commit16cde63e05519c770daa69345b8cf37fb31eaa2a (patch)
treee23b98863509b0b0cb9d1223703a97b9a4c0f167
parentbuiltin: Reject malformed printf specifications with digits after '*' (diff)
downloaddash-16cde63e05519c770daa69345b8cf37fb31eaa2a.tar.gz
dash-16cde63e05519c770daa69345b8cf37fb31eaa2a.zip
jobs: Don't attempt to access job table for job %0
If job %0 is (mistakenly) specified, an out-of-bounds access to the
jobtab occurs in function getjob() if num = 0:

	jp = jobtab + 0 - 1

Fix this by checking that the job number is larger than 0 before
accessing the jobtab.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--src/jobs.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/jobs.c b/src/jobs.c
index c2c2332..3997863 100644
--- a/src/jobs.c
+++ b/src/jobs.c
@@ -699,7 +699,7 @@ check:
 
 	if (is_number(p)) {
 		num = atoi(p);
-		if (num <= njobs) {
+		if (num > 0 && num <= njobs) {
 			jp = jobtab + num - 1;
 			if (jp->used)
 				goto gotit;