ソースを参照

core: fixed passed buffer size in suip2a() for ipv6

- buffer size set to IP6_MAX_STR_SIZE, it was too short and returned
  value was empty addres "[]"
- the function is used only by siptrace
- patch from github pull request #381
Daniel-Constantin Mierla 10 年 前
コミット
d6f313e61b
1 ファイル変更2 行追加2 行削除
  1. 2 2
      ip_addr.h

+ 2 - 2
ip_addr.h

@@ -741,14 +741,14 @@ static inline char* suip2a(union sockaddr_union* su, int su_len)
 			return "<addr. error>";
 		buf[0]='[';
 		offs=1+ip6tosbuf((unsigned char*)su->sin6.sin6_addr.s6_addr, &buf[1],
-							sizeof(buf)-4);
+							IP6_MAX_STR_SIZE);
 		buf[offs]=']';
 		offs++;
 	}else
 	if (unlikely(su_len<sizeof(su->sin)))
 		return "<addr. error>";
 	else
-		offs=ip4tosbuf((unsigned char*)&su->sin.sin_addr, buf, sizeof(buf)-2);
+		offs=ip4tosbuf((unsigned char*)&su->sin.sin_addr, buf, IP4_MAX_STR_SIZE);
 	buf[offs]=0;
 	return buf;
 }