diff options
Diffstat (limited to 'net/dns_resolver/dns_query.c')
| -rw-r--r-- | net/dns_resolver/dns_query.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/net/dns_resolver/dns_query.c b/net/dns_resolver/dns_query.c index c32be292c7e..dd8696a3dbe 100644 --- a/net/dns_resolver/dns_query.c +++ b/net/dns_resolver/dns_query.c @@ -32,8 +32,7 @@   *   the GNU Lesser General Public License for more details.   *   *   You should have received a copy of the GNU Lesser General Public License - *   along with this library; if not, write to the Free Software - *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + *   along with this library; if not, see <http://www.gnu.org/licenses/>.   */  #include <linux/module.h> @@ -94,8 +93,8 @@ int dns_query(const char *type, const char *name, size_t namelen,  	}  	if (!namelen) -		namelen = strlen(name); -	if (namelen < 3) +		namelen = strnlen(name, 256); +	if (namelen < 3 || namelen > 255)  		return -EINVAL;  	desclen += namelen + 1; @@ -150,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] = '\0'; +  	if (_expiry)  		*_expiry = rkey->expiry;  | 
