Skip to content

Commit 2b280b7

Browse files
author
weiyanhua
committed
memroy not enough,There is a danger of overwriting.
1 parent 5846f14 commit 2b280b7

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

kdns/src/forward.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ static void parse_dns_fwd_zones(char * fwd_addrs) {
104104
int zone_idx = 1;
105105
char *zone_info = NULL;
106106
char buf[BUF_SIZE];
107-
char zone_name[64];
107+
char zone_name[FWD_MAX_DOMAIN_NAME_LEN];
108108
char zone_addr[BUF_SIZE];
109109
zone_fwd_input_tmp * fwd_input_tmp = NULL;
110110
if (strlen(fwd_addrs) == 0){
@@ -125,13 +125,18 @@ static void parse_dns_fwd_zones(char * fwd_addrs) {
125125
while (zone_info) {
126126
char *pos;
127127
memset(buf, 0, BUF_SIZE);
128-
memset(zone_name, 0, 64);
128+
memset(zone_name, 0, FWD_MAX_DOMAIN_NAME_LEN);
129129
memset(zone_addr, 0, BUF_SIZE);
130130
strncpy(buf, zone_info, BUF_SIZE - 1);
131131
pos = (strrchr(buf, '@'));
132132
if (pos) {
133-
memcpy(zone_name,buf,pos - buf);
134-
memcpy(zone_addr,pos+1, strlen(buf)+ buf - pos -1 );
133+
if (pos - buf >= FWD_MAX_DOMAIN_NAME_LEN) {
134+
log_msg(LOG_ERR, "domain name legth greater than %d\n", FWD_MAX_DOMAIN_NAME_LEN);
135+
exit(-1);
136+
}
137+
138+
memcpy(zone_name, buf, pos - buf);
139+
memcpy(zone_addr, pos+1, strlen(buf)+ buf - pos -1 );
135140
fwd_input_tmp[zone_idx].zone_name = strdup(zone_name);
136141
fwd_input_tmp[zone_idx].fwd_addrs = strdup(zone_addr);
137142
}else{

0 commit comments

Comments
 (0)