ash: jobs: Don't attempt to access job table for job %0
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 28 Sep 2016 23:10:08 +0000 (01:10 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 28 Sep 2016 23:10:08 +0000 (01:10 +0200)
Upstream commit:

    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>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index d0c0a510cebf441612acdda4b55898a1bc25aefc..a31cee25970dc7730b0b7b26d773fee5d1a046e9 100644 (file)
@@ -3654,7 +3654,7 @@ getjob(const char *name, int getctl)
 
        if (is_number(p)) {
                num = atoi(p);
-               if (num <= njobs) {
+               if (num > 0 && num <= njobs) {
                        jp = jobtab + num - 1;
                        if (jp->used)
                                goto gotit;