Message ID | 1402163811-21604-1-git-send-email-manuel.schoelling@gmx.de |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
On Sat, Jun 7, 2014 at 1:56 PM, Manuel Schölling <manuel.schoelling@gmx.de> wrote: > dns_query() credulously assumes that keys are null-terminated and > returns a copy of a memory block that is off by one. > --- > net/dns_resolver/dns_query.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/dns_resolver/dns_query.c b/net/dns_resolver/dns_query.c > index e7b6d53..53be635 100644 > --- a/net/dns_resolver/dns_query.c > +++ b/net/dns_resolver/dns_query.c > @@ -149,7 +149,9 @@ int dns_query(const char *type, const char *name, size_t namelen, > if (!*_result) > goto put; > > - memcpy(*_result, upayload->data, len + 1); > + memcpy(*_result, upayload->data, len); > + *_result[len+1] = '\0'; Off by one... > + > if (_expiry) > *_expiry = rkey->expiry; > > -- > 1.7.10.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
LOL, that was stupid! Sorry, I'll send a corrected version in a second... On Sa, 2014-06-07 at 14:54 -0400, Trond Myklebust wrote: > On Sat, Jun 7, 2014 at 1:56 PM, Manuel Schölling > <manuel.schoelling@gmx.de> wrote: > > dns_query() credulously assumes that keys are null-terminated and > > returns a copy of a memory block that is off by one. > > --- > > net/dns_resolver/dns_query.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/net/dns_resolver/dns_query.c b/net/dns_resolver/dns_query.c > > index e7b6d53..53be635 100644 > > --- a/net/dns_resolver/dns_query.c > > +++ b/net/dns_resolver/dns_query.c > > @@ -149,7 +149,9 @@ int dns_query(const char *type, const char *name, size_t namelen, > > if (!*_result) > > goto put; > > > > - memcpy(*_result, upayload->data, len + 1); > > + memcpy(*_result, upayload->data, len); > > + *_result[len+1] = '\0'; > > Off by one... > > > + > > if (_expiry) > > *_expiry = rkey->expiry; > > > > -- > > 1.7.10.4 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > Please read the FAQ at http://www.tux.org/lkml/ > > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/dns_resolver/dns_query.c b/net/dns_resolver/dns_query.c index e7b6d53..53be635 100644 --- a/net/dns_resolver/dns_query.c +++ b/net/dns_resolver/dns_query.c @@ -149,7 +149,9 @@ int dns_query(const char *type, const char *name, size_t namelen, if (!*_result) goto put; - memcpy(*_result, upayload->data, len + 1); + memcpy(*_result, upayload->data, len); + *_result[len+1] = '\0'; + if (_expiry) *_expiry = rkey->expiry;