8000 Update applemidi.c · g-coder/midikit@044d4b9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 044d4b9

Browse files
committed
Update applemidi.c
Initialize sockaddr_in variable to clear sin_zero field to avoid undifined behavior. Socket system call's return is validated before the call of bind.
1 parent f065d6c commit 044d4b9

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

driver/applemidi/applemidi.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,15 @@ static int _applemidi_connect( struct MIDIDriverAppleMIDI * driver ) {
170170
struct sockaddr_in addr;
171171
int result = 0;
172172

173+
memset(&addr, 0, sizeof(addr));
173174
if( driver->control_socket <= 0 ) {
174175
addr.sin_family = AF_INET;
175176
addr.sin_addr.s_addr = INADDR_ANY;
176177
addr.sin_port = htons( driver->port );
177178

178179
driver->control_socket = socket( PF_INET, SOCK_DGRAM, 0 );
179-
result = bind( driver->control_socket, (struct sockaddr *) &addr, sizeof(addr) );
180+
if (driver->control_socket != -1)
181+
result = bind( driver->control_socket, (struct sockaddr *) &addr, sizeof(addr) );
180182
}
181183

182184
if( driver->rtp_socket <= 0 ) {
@@ -185,7 +187,8 @@ static int _applemidi_connect( struct MIDIDriverAppleMIDI * driver ) {
185187
addr.sin_port = htons( driver->port + 1 );
186188

187189
driver->rtp_socket = socket( PF_INET, SOCK_DGRAM, 0 );
188-
result = bind( driver->rtp_socket, (struct sockaddr *) &addr, sizeof(addr) );
190+
if (driver->control_socket != -1)
191+
result = bind( driver->rtp_socket, (struct sockaddr *) &addr, sizeof(addr) );
189192
}
190193

191194
return result;

0 commit comments

Comments
 (0)
0