Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0c0ffbe

Browse files
[3.13]gh-132075: Fix possible use of sockaddr structures with uninitialized members (GH-132076) (GH-132086)
Now all structure members are initialized with zeroes by default.(cherry picked from commit345baa7)Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
1 parentd30052a commit0c0ffbe

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix possible use of:mod:`socket` address structures with uninitialized
2+
members. Now all structure members are initialized with zeroes by default.

‎Modules/socketmodule.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1779,6 +1779,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
17791779
assert(path.len >=0);
17801780

17811781
structsockaddr_un*addr=&addrbuf->un;
1782+
memset(addr,0,sizeof(structsockaddr_un));
17821783
#ifdef__linux__
17831784
if (path.len==0||*(constchar*)path.buf==0) {
17841785
/* Linux abstract namespace extension:
@@ -1822,6 +1823,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
18221823
{
18231824
intpid,groups;
18241825
structsockaddr_nl*addr=&addrbuf->nl;
1826+
memset(addr,0,sizeof(structsockaddr_nl));
18251827
if (!PyTuple_Check(args)) {
18261828
PyErr_Format(
18271829
PyExc_TypeError,
@@ -1849,6 +1851,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
18491851
{
18501852
unsignedintnode,port;
18511853
structsockaddr_qrtr*addr=&addrbuf->sq;
1854+
memset(addr,0,sizeof(structsockaddr_qrtr));
18521855
if (!PyTuple_Check(args)) {
18531856
PyErr_Format(
18541857
PyExc_TypeError,
@@ -1926,6 +1929,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
19261929
return0;
19271930
}
19281931
structsockaddr_in*addr=&addrbuf->in;
1932+
memset(addr,0,sizeof(structsockaddr_in));
19291933
result=setipaddr(s->state,host.buf, (structsockaddr*)addr,
19301934
sizeof(*addr),AF_INET);
19311935
idna_cleanup(&host);
@@ -1971,6 +1975,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
19711975
return0;
19721976
}
19731977
structsockaddr_in6*addr=&addrbuf->in6;
1978+
memset(addr,0,sizeof(structsockaddr_in6));
19741979
result=setipaddr(s->state,host.buf, (structsockaddr*)addr,
19751980
sizeof(*addr),AF_INET6);
19761981
idna_cleanup(&host);
@@ -2028,6 +2033,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
20282033
{
20292034
constchar*straddr;
20302035
structsockaddr_rc*addr=&addrbuf->bt_rc;
2036+
memset(addr,0,sizeof(structsockaddr_rc));
20312037
_BT_RC_MEMB(addr,family)=AF_BLUETOOTH;
20322038
#ifdefMS_WINDOWS
20332039
unsigned longchannel;
@@ -2054,6 +2060,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
20542060
caseBTPROTO_HCI:
20552061
{
20562062
structsockaddr_hci*addr=&addrbuf->bt_hci;
2063+
memset(addr,0,sizeof(structsockaddr_hci));
20572064
#if defined(__NetBSD__)|| defined(__DragonFly__)
20582065
constchar*straddr;
20592066
_BT_HCI_MEMB(addr,family)=AF_BLUETOOTH;
@@ -2105,6 +2112,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
21052112
constchar*straddr;
21062113

21072114
structsockaddr_sco*addr=&addrbuf->bt_sco;
2115+
memset(addr,0,sizeof(structsockaddr_sco));
21082116
_BT_SCO_MEMB(addr,family)=AF_BLUETOOTH;
21092117
if (!PyBytes_Check(args)) {
21102118
PyErr_Format(PyExc_OSError,
@@ -2182,6 +2190,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
21822190
return0;
21832191
}
21842192
structsockaddr_ll*addr=&addrbuf->ll;
2193+
memset(addr,0,sizeof(structsockaddr_ll));
21852194
addr->sll_family=AF_PACKET;
21862195
addr->sll_protocol=htons((short)protoNumber);
21872196
addr->sll_ifindex=ifr.ifr_ifindex;
@@ -2266,6 +2275,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
22662275
structifreqifr;
22672276
Py_ssize_tlen;
22682277
structsockaddr_can*addr=&addrbuf->can;
2278+
memset(addr,0,sizeof(structsockaddr_can));
22692279

22702280
if (!PyTuple_Check(args)) {
22712281
PyErr_Format(PyExc_TypeError,
@@ -2318,6 +2328,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
23182328
unsigned longintrx_id,tx_id;
23192329

23202330
structsockaddr_can*addr=&addrbuf->can;
2331+
memset(addr,0,sizeof(structsockaddr_can));
23212332

23222333
if (!PyArg_ParseTuple(args,"O&kk",PyUnicode_FSConverter,
23232334
&interfaceName,
@@ -2365,6 +2376,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
23652376
uint8_tj1939_addr;
23662377

23672378
structsockaddr_can*addr=&addrbuf->can;
2379+
memset(addr,0,sizeof(structsockaddr_can));
23682380

23692381
if (!PyArg_ParseTuple(args,"O&KIB",PyUnicode_FSConverter,
23702382
&interfaceName,
@@ -2417,6 +2429,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
24172429
caseSYSPROTO_CONTROL:
24182430
{
24192431
structsockaddr_ctl*addr=&addrbuf->ctl;
2432+
memset(addr,0,sizeof(structsockaddr_ctl));
24202433
addr->sc_family=AF_SYSTEM;
24212434
addr->ss_sysaddr=AF_SYS_CONTROL;
24222435

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp