* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rdata.c,v 1.147.2.6 2002/03/20 22:41:58 marka Exp $ */
+/* $Id: rdata.c,v 1.147.2.7 2002/03/27 23:52:33 marka Exp $ */
#include <config.h>
#include <ctype.h>
strncasecmp("class", source->base, 5) == 0) {
char buf[sizeof("65000")];
char *endp;
- int val;
+ unsigned int val;
- strncpy(buf, source->base + 5, sizeof(buf));
- buf[sizeof(buf) - 1] = '\0';
- val = strtol(buf, &endp, 10);
- if (*endp == '\0' && val >= 0 && val <= 0xffff) {
+ strncpy(buf, source->base + 5, source->length - 5);
+ buf[source->length - 5] = '\0';
+ val = strtoul(buf, &endp, 10);
+ if (*endp == '\0' && val <= 0xffff) {
*classp = (dns_rdataclass_t)val;
return (ISC_R_SUCCESS);
}
strncasecmp("type", source->base, 4) == 0) {
char buf[sizeof("65000")];
char *endp;
- int val;
+ unsigned int val;
- strncpy(buf, source->base + 4, sizeof(buf));
- buf[sizeof(buf) - 1] = '\0';
- val = strtol(buf, &endp, 10);
- if (*endp == '\0' && val >= 0 && val <= 0xffff) {
+ strncpy(buf, source->base + 4, source->length - 4);
+ buf[source->length - 4] = '\0';
+ val = strtoul(buf, &endp, 10);
+ if (*endp == '\0' && val <= 0xffff) {
*typep = (dns_rdatatype_t)val;
return (ISC_R_SUCCESS);
}