Revised SA-16:37, addressing regressions from initial SA.
This commit is contained in:
parent
366ff17d89
commit
2dd1eb304f
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=49715
5 changed files with 130 additions and 54 deletions
43
share/security/patches/SA-16:37/libc-inc.patch
Normal file
43
share/security/patches/SA-16:37/libc-inc.patch
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
--- lib/libc/net/linkaddr.c.orig
|
||||
+++ lib/libc/net/linkaddr.c
|
||||
@@ -125,7 +125,7 @@
|
||||
static char obuf[64];
|
||||
_Static_assert(sizeof(obuf) >= IFNAMSIZ + 20, "obuf is too small");
|
||||
char *out;
|
||||
- const char *in, *inlim;
|
||||
+ const u_char *in, *inlim;
|
||||
int namelen, i, rem;
|
||||
|
||||
namelen = (sdl->sdl_nlen <= IFNAMSIZ) ? sdl->sdl_nlen : IFNAMSIZ;
|
||||
@@ -142,11 +142,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
- in = (const char *)sdl->sdl_data + sdl->sdl_nlen;
|
||||
+ in = (const u_char *)sdl->sdl_data + sdl->sdl_nlen;
|
||||
inlim = in + sdl->sdl_alen;
|
||||
|
||||
while (in < inlim && rem > 1) {
|
||||
- if (in != (const char *)sdl->sdl_data + sdl->sdl_nlen) {
|
||||
+ if (in != (const u_char *)sdl->sdl_data + sdl->sdl_nlen) {
|
||||
*out++ = '.';
|
||||
rem--;
|
||||
}
|
||||
@@ -154,15 +154,14 @@
|
||||
if (i > 0xf) {
|
||||
if (rem < 3)
|
||||
break;
|
||||
+ *out++ = hexlist[i >> 4];
|
||||
*out++ = hexlist[i & 0xf];
|
||||
- i >>= 4;
|
||||
- *out++ = hexlist[i];
|
||||
rem -= 2;
|
||||
} else {
|
||||
if (rem < 2)
|
||||
break;
|
||||
*out++ = hexlist[i];
|
||||
- rem++;
|
||||
+ rem--;
|
||||
}
|
||||
}
|
||||
*out = 0;
|
||||
16
share/security/patches/SA-16:37/libc-inc.patch.asc
Normal file
16
share/security/patches/SA-16:37/libc-inc.patch.asc
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJYSNpCAAoJEO1n7NZdz2rnQhwQAIB9bWgYA4tn7fHwbpmEZrrz
|
||||
9clKJ+DUrINrgjD4R5J52b2vTirwSX+jLhwcblDcFz85VeoIc8xDPpd8rvFa9znC
|
||||
UZ2SBI0itfVZQkEGu+uEJE+9QdEr2jbwq1LIr3Ye3SECQJORlg11detvPEbNyDvm
|
||||
20DrfR+BPFvDSGKGEbKvegGaPUTv+MYXx3Km4jiXDB/Bo7lUjmE/mdIZszskzJpM
|
||||
AKx4moCR0Wep73vxGOhi2GArf+p4ZUe9eu0wdU/NTKzYH5DdjGnV+bNam2SdpgDT
|
||||
rMfrvpUJ+uqdZ1cj7yCsPjuKzskKdWihOCD+vHS3rC00ggYCQv5gnnnyo08z4qRE
|
||||
e0yU/4lj68i0X1E6gUIvATW7Y4r4EqX5xNl/nKfpgFQSqJRtZGbmlUH/7eni82Fh
|
||||
W3BKZsUyTtZJIod+SlmEloOlsqpRpL+ePSKXv5e0vLq6pr4tdLFFrPaKsi+6AbFO
|
||||
mfVSHGJIdB7WUaau34ymhpyb1SI1qrEoNNoYki6SNfuXsghgQKgghwl0cWpJEsUp
|
||||
Atg+BQH7ea2sPQh9BXqsiSiUb6wuyi/JHeuBQ4pQcKzyf7RuyxaA7rtr2p0w+UBG
|
||||
MRgceUP4H8XxCCltddq2WrNTB5dmac0t5ehYO8eJpQgtWPsl8yG5PldHkXWkhEa6
|
||||
gJVPBsoQJObVrkM/PXrl
|
||||
=/W0I
|
||||
-----END PGP SIGNATURE-----
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
#include <net/if_dl.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -122,31 +123,47 @@
|
||||
@@ -122,31 +123,46 @@
|
||||
link_ntoa(const struct sockaddr_dl *sdl)
|
||||
{
|
||||
static char obuf[64];
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
- int firsttime = 1;
|
||||
+ _Static_assert(sizeof(obuf) >= IFNAMSIZ + 20, "obuf is too small");
|
||||
+ char *out;
|
||||
+ const char *in, *inlim;
|
||||
+ const u_char *in, *inlim;
|
||||
+ int namelen, i, rem;
|
||||
|
||||
- if (sdl->sdl_nlen) {
|
||||
|
|
@ -44,31 +44,31 @@
|
|||
- firsttime = 0;
|
||||
- else
|
||||
+
|
||||
+ in = (const char *)sdl->sdl_data + sdl->sdl_nlen;
|
||||
+ in = (const u_char *)sdl->sdl_data + sdl->sdl_nlen;
|
||||
+ inlim = in + sdl->sdl_alen;
|
||||
+
|
||||
+ while (in < inlim && rem > 1) {
|
||||
+ if (in != (const char *)sdl->sdl_data + sdl->sdl_nlen) {
|
||||
+ if (in != (const u_char *)sdl->sdl_data + sdl->sdl_nlen) {
|
||||
*out++ = '.';
|
||||
+ rem--;
|
||||
+ }
|
||||
i = *in++;
|
||||
if (i > 0xf) {
|
||||
- out[1] = hexlist[i & 0xf];
|
||||
+ if (rem < 3)
|
||||
+ break;
|
||||
+ *out++ = hexlist[i & 0xf];
|
||||
i >>= 4;
|
||||
- i >>= 4;
|
||||
- out[0] = hexlist[i];
|
||||
- out += 2;
|
||||
- } else
|
||||
*out++ = hexlist[i];
|
||||
+ if (rem < 3)
|
||||
+ break;
|
||||
+ *out++ = hexlist[i >> 4];
|
||||
+ *out++ = hexlist[i & 0xf];
|
||||
+ rem -= 2;
|
||||
+ } else {
|
||||
+ if (rem < 2)
|
||||
+ break;
|
||||
+ *out++ = hexlist[i];
|
||||
+ rem++;
|
||||
*out++ = hexlist[i];
|
||||
+ rem--;
|
||||
+ }
|
||||
}
|
||||
*out = 0;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJYRw1vAAoJEO1n7NZdz2rnH2QP/jQF/xtjDHJoEKk3h6DGZUC4
|
||||
GM27jneyYt/SWbGVHchYhD6y+67304OeUCZ7N6aEUI3cVgoZObDuVNoNrtfBnSPB
|
||||
gTtAOUQchlF0ZP/TKZSrONz6Pz+1R/N9QryJSDYr3KUsLDuU6I2nob7kR+Iwxn1V
|
||||
pX8MakPMSOUH8tHHpXlQySN8rjobtiCdvulDyi0IX92Ajdq7fqLlu2oiHsMYdtfW
|
||||
hzWahmHJZUFe0CqLc+78vGB5WTsIXcwSfrkq5MVy8hDlbtmFrgyXcReEBnXSw+kC
|
||||
Y751w+W674Cck/60inzA3is7Iy84/yE0fGuBmFWPhOatTbVqI6dG+gK0CqlzW8g7
|
||||
M9ven4K9S9vO52oMSlQJi1VGx66r1P4+7RpiqIC6GFpBZ4ItEYvD4/SP3y75eIGD
|
||||
LRSzV+LHJarwNslznAFWxg0rWoHbOhH2x0XT2Ve7rXXm4jzIMTL6LSczYlppQ6d2
|
||||
DBfyFHykY4iA0VbSBJYXueQrDHc4njJnr4Kl1ZSOZq9HhUbwVcVM0Wse+ZZJ7veQ
|
||||
Xe83iqX6+bbRM8GFLtSw/mJa1h+TMW6N8T/qQXdokYCpVASLDnwfLinqkeC1mh+H
|
||||
Wr5kf9pbrBTLcnR/LRnVDZ9ySN6AaZdbLea+7RnPZ46MyQIG14yIvJMPk1LnQB9L
|
||||
dO+RStwsKHuz2O37ENqi
|
||||
=lrl6
|
||||
iQIcBAABCgAGBQJYSNpCAAoJEO1n7NZdz2rn878P/Apo2QqeYGpvg35269V/BSL/
|
||||
jV42W8llFJ+5sxieWMgxTX3RxymwqhxZPQU6gFoBadnESWo/Z00mtNHygP7JIkDZ
|
||||
SKmOBJl2uZDuZpXAwt2wpKqzYixBAzA19R7gxHI9nXU9CiAG4Ql+EAD99QbUZhPf
|
||||
CjELbPmYwdkt77QrRJXdUZd+vUV3QkvB/4B+eww+aoaG5pTZ1IVjO45PXQn4FDsW
|
||||
04UNYlvgKXQCpEBDYKbsht1B75JCrlvgMpG0KBeDzVMtWxLcTtj8l4U4HH70N6Jx
|
||||
OTcvyCuzRMNltKVEcl5j8HX8YbHq8cGSzdbtKXbCrP4BHGjNJpL9ZGZyZt0DpwI1
|
||||
/vjij8ChpMUH9g+lrIGZF6WvXaY3L4OInldtUvBuYuVuJMiXiR2WuRJSzyMHVgxN
|
||||
2+k3+wgkwPHwJ24UTu+pj0GJ/e7HdWTEUK+Ox6m/+ynj69jlRoUipf1JrFMCsBVh
|
||||
BfoPZdYEXjy2Y8hAs4ybQvufFdBs/A7G+xHR4qgQ7XxnTaCTR3GObHAvp1ytHj19
|
||||
J1nHjPoF7t9wq7ZBOXJNJGtZ4T1S5E5POtXQvxXm/pk+I9JqauESUDyBkhaStEJB
|
||||
O+g0cS3G51tJpcfhEnaNQnFeI20NIXkqeqGZSDdCMHXseWzJuWqux7xKICv0iA2x
|
||||
Sc88sLhCDB/Hu+VGm5DX
|
||||
=hvSq
|
||||
-----END PGP SIGNATURE-----
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue