OSDN Git Service

inet: fix unsafe access to _res.options in res_mkquery()
authorVanya Sergeev <vsergeev@gmail.com>
Sat, 8 Jun 2013 22:49:45 +0000 (15:49 -0700)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Fri, 19 Jul 2013 15:35:56 +0000 (17:35 +0200)
res_mkquery() takes out __resolv_lock to copy _res.options to function local
_res_options on line 4204, but later unsafely accesses _res.options without a
lock, instead of its local copy _res_options, on line 4221.  Looks like a
period / underscore typo.

Signed-off-by: Vanya Sergeev <vsergeev@gmail.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
libc/inet/resolv.c

index ffd3fe8..8546b27 100644 (file)
@@ -4218,7 +4218,7 @@ int res_mkquery(int op, const char *dname, int class, int type,
        hp = (HEADER *) buf;
        hp->id = getpid() & 0xffff;
        hp->opcode = op;
-       hp->rd = (_res.options & RES_RECURSE) != 0U;
+       hp->rd = (_res_options & RES_RECURSE) != 0U;
        hp->rcode = NOERROR;
 
        cp = buf + HFIXEDSZ;