[FreeBSD-users-jp 95609] Re: FreeBSD Security Advisory FreeBSD-SA-15:24.rpcbind

Akihiro HIRANO hirano @ t.kanazawa-u.ac.jp
2015年 10月 1日 (木) 01:52:38 UTC


平野@金沢大です。

On 2015/09/30 3:39, FreeBSD Security Advisories wrote:
 > 
=============================================================================
 > FreeBSD-SA-15:24.rpcbind                                    Security 
Advisory
 >                                                            The 
FreeBSD Project
 >
 > Topic:          rpcbind(8) remote denial of service

 10.1R amd64マシンでfreebsd-updateして上記を適用すると、
rpcbindが落ちまくるという症状になりました。
NISのサーバ兼クライアントだったので、NISが使用不能なりました。

 freebsd-securityでも同じような訴えがありました。
添付のパッチで直ったという報告がありますが、
当方ではまだテストしておりません。

 以上、ご参考までに。
----
平野晃宏@金沢大学 大学院 自然科学研究科 電子情報科学専攻
hirano at t.kanazawa-u.ac.jp

-------------- next part --------------
Index: usr.sbin/rpcbind/rpcb_svc_com.c
===================================================================
--- usr.sbin/rpcbind/rpcb_svc_com.c	(revision 288421)
+++ usr.sbin/rpcbind/rpcb_svc_com.c	(working copy)
@@ -1052,12 +1052,15 @@ static bool_t
 netbuf_copybuf(struct netbuf *dst, const struct netbuf *src)
 {
 
-	assert(dst->buf == NULL);
+	if (dst->len != src->len || dst->buf == NULL) {
+		if (dst->buf != NULL)
+			free(dst->buf);
+		if ((dst->buf = malloc(src->len)) == NULL)
+			return (FALSE);
 
-	if ((dst->buf = malloc(src->len)) == NULL)
-		return (FALSE);
+		dst->maxlen = dst->len = src->len;
+	}
 
-	dst->maxlen = dst->len = src->len;
 	memcpy(dst->buf, src->buf, src->len);
 	return (TRUE);
 }


freebsd-users-jp メーリングリストの案内