Skip to content

Commit 263e646

Browse files
fix: Address possible NULL binding compiler warning (#1091)
1 parent 97cb0b4 commit 263e646

File tree

1 file changed

+42
-44
lines changed

1 file changed

+42
-44
lines changed

WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.m

Lines changed: 42 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2883,7 +2883,7 @@ - (BOOL)bindToPort:(uint16_t)port interface:(NSString *)interface error:(NSError
28832883

28842884
// Create the socket(s) if needed
28852885

2886-
if ((self->flags & kDidCreateSockets) == 0)
2886+
if ((self->flags & kDidCreateSockets) == 0)
28872887
{
28882888
if (![self createSocket4:useIPv4 socket6:useIPv6 error:&err])
28892889
{
@@ -2897,7 +2897,7 @@ - (BOOL)bindToPort:(uint16_t)port interface:(NSString *)interface error:(NSError
28972897

28982898
if (useIPv4)
28992899
{
2900-
int status = bind(self->socket4FD, (const struct sockaddr *)[interface4 bytes], (socklen_t)[interface4 length]);
2900+
int status = bind(self->socket4FD, (const struct sockaddr *)[interface4 bytes], (socklen_t)[interface4 length]);
29012901
if (status == -1)
29022902
{
29032903
[self closeSockets];
@@ -2911,7 +2911,7 @@ - (BOOL)bindToPort:(uint16_t)port interface:(NSString *)interface error:(NSError
29112911

29122912
if (useIPv6)
29132913
{
2914-
int status = bind(self->socket6FD, (const struct sockaddr *)[interface6 bytes], (socklen_t)[interface6 length]);
2914+
int status = bind(self->socket6FD, (const struct sockaddr *)[interface6 bytes], (socklen_t)[interface6 length]);
29152915
if (status == -1)
29162916
{
29172917
[self closeSockets];
@@ -2925,10 +2925,10 @@ - (BOOL)bindToPort:(uint16_t)port interface:(NSString *)interface error:(NSError
29252925

29262926
// Update flags
29272927

2928-
self->flags |= kDidBind;
2928+
self->flags |= kDidBind;
29292929

2930-
if (!useIPv4) self->flags |= kIPv4Deactivated;
2931-
if (!useIPv6) self->flags |= kIPv6Deactivated;
2930+
if (!useIPv4) self->flags |= kIPv4Deactivated;
2931+
if (!useIPv6) self->flags |= kIPv6Deactivated;
29322932

29332933
result = YES;
29342934

@@ -3003,7 +3003,7 @@ - (BOOL)bindToAddress:(NSData *)localAddr error:(NSError **)errPtr
30033003

30043004
// Create the socket(s) if needed
30053005

3006-
if ((self->flags & kDidCreateSockets) == 0)
3006+
if ((self->flags & kDidCreateSockets) == 0)
30073007
{
30083008
if (![self createSocket4:useIPv4 socket6:useIPv6 error:&err])
30093009
{
@@ -3013,30 +3013,28 @@ - (BOOL)bindToAddress:(NSData *)localAddr error:(NSError **)errPtr
30133013

30143014
// Bind the socket(s)
30153015

3016-
if (useIPv4)
3016+
if (useIPv4 || useIPv6)
30173017
{
3018+
NSData *addressData = useIPv4 ? localAddr4 : localAddr6;
3019+
int socketFD = useIPv4 ? self->socket4FD : self->socket6FD;
3020+
NSString *protocol = useIPv4 ? @"IPv4" : @"IPv6";
3021+
30183022
LogVerbose(@"Binding socket to address(%@:%hu)",
3019-
[[self class] hostFromAddress:localAddr4],
3020-
[[self class] portFromAddress:localAddr4]);
3023+
[[self class] hostFromAddress:addressData],
3024+
[[self class] portFromAddress:addressData]);
30213025

3022-
int status = bind(self->socket4FD, (const struct sockaddr *)[localAddr4 bytes], (socklen_t)[localAddr4 length]);
3023-
if (status == -1)
3026+
const struct sockaddr *addr = (const struct sockaddr *)[addressData bytes];
3027+
if (addr == NULL)
30243028
{
30253029
[self closeSockets];
30263030

3027-
NSString *reason = @"Error in bind() function";
3028-
err = [self errnoErrorWithReason:reason];
3031+
NSString *reason = [NSString stringWithFormat:@"Invalid address data for %@ bind", protocol];
3032+
err = [self badParamError:reason];
30293033

30303034
return_from_block;
30313035
}
3032-
}
3033-
else
3034-
{
3035-
LogVerbose(@"Binding socket to address(%@:%hu)",
3036-
[[self class] hostFromAddress:localAddr6],
3037-
[[self class] portFromAddress:localAddr6]);
30383036

3039-
int status = bind(self->socket6FD, (const struct sockaddr *)[localAddr6 bytes], (socklen_t)[localAddr6 length]);
3037+
int status = bind(socketFD, addr, (socklen_t)[addressData length]);
30403038
if (status == -1)
30413039
{
30423040
[self closeSockets];
@@ -3050,10 +3048,10 @@ - (BOOL)bindToAddress:(NSData *)localAddr error:(NSError **)errPtr
30503048

30513049
// Update flags
30523050

3053-
self->flags |= kDidBind;
3051+
self->flags |= kDidBind;
30543052

3055-
if (!useIPv4) self->flags |= kIPv4Deactivated;
3056-
if (!useIPv6) self->flags |= kIPv6Deactivated;
3053+
if (!useIPv4) self->flags |= kIPv4Deactivated;
3054+
if (!useIPv6) self->flags |= kIPv6Deactivated;
30573055

30583056
result = YES;
30593057

@@ -3140,7 +3138,7 @@ - (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)e
31403138

31413139
// Create the socket(s) if needed
31423140

3143-
if ((self->flags & kDidCreateSockets) == 0)
3141+
if ((self->flags & kDidCreateSockets) == 0)
31443142
{
31453143
if (![self createSockets:&err])
31463144
{
@@ -3173,9 +3171,9 @@ - (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)e
31733171

31743172
// Updates flags, add connect packet to send queue, and pump send queue
31753173

3176-
self->flags |= kConnecting;
3174+
self->flags |= kConnecting;
31773175

3178-
[self->sendQueue addObject:packet];
3176+
[self->sendQueue addObject:packet];
31793177
[self maybeDequeueSend];
31803178

31813179
result = YES;
@@ -3221,7 +3219,7 @@ - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr
32213219

32223220
// Create the socket(s) if needed
32233221

3224-
if ((self->flags & kDidCreateSockets) == 0)
3222+
if ((self->flags & kDidCreateSockets) == 0)
32253223
{
32263224
if (![self createSockets:&err])
32273225
{
@@ -3240,9 +3238,9 @@ - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr
32403238

32413239
// Updates flags, add connect packet to send queue, and pump send queue
32423240

3243-
self->flags |= kConnecting;
3241+
self->flags |= kConnecting;
32443242

3245-
[self->sendQueue addObject:packet];
3243+
[self->sendQueue addObject:packet];
32463244
[self maybeDequeueSend];
32473245

32483246
result = YES;
@@ -3473,7 +3471,7 @@ - (BOOL)performMulticastRequest:(int)requestType
34733471

34743472
// Perform join
34753473

3476-
if ((self->socket4FD != SOCKET_NULL) && groupAddr4 && interfaceAddr4)
3474+
if ((self->socket4FD != SOCKET_NULL) && groupAddr4 && interfaceAddr4)
34773475
{
34783476
const struct sockaddr_in *nativeGroup = (const struct sockaddr_in *)[groupAddr4 bytes];
34793477
const struct sockaddr_in *nativeIface = (const struct sockaddr_in *)[interfaceAddr4 bytes];
@@ -3495,7 +3493,7 @@ - (BOOL)performMulticastRequest:(int)requestType
34953493

34963494
result = YES;
34973495
}
3498-
else if ((self->socket6FD != SOCKET_NULL) && groupAddr6 && interfaceAddr6)
3496+
else if ((self->socket6FD != SOCKET_NULL) && groupAddr6 && interfaceAddr6)
34993497
{
35003498
const struct sockaddr_in6 *nativeGroup = (const struct sockaddr_in6 *)[groupAddr6 bytes];
35013499

@@ -3549,7 +3547,7 @@ - (BOOL)sendIPv4MulticastOnInterface:(NSString*)interface error:(NSError **)errP
35493547
return_from_block;
35503548
}
35513549

3552-
if ((self->flags & kDidCreateSockets) == 0)
3550+
if ((self->flags & kDidCreateSockets) == 0)
35533551
{
35543552
if (![self createSockets:&err])
35553553
{
@@ -3582,7 +3580,7 @@ - (BOOL)sendIPv4MulticastOnInterface:(NSString*)interface error:(NSError **)errP
35823580
}
35833581
}
35843582

3585-
}};
3583+
}};
35863584

35873585
if (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))
35883586
block();
@@ -3637,9 +3635,9 @@ - (BOOL)sendIPv6MulticastOnInterface:(NSString*)interface error:(NSError **)errP
36373635
return_from_block;
36383636
}
36393637
result = YES;
3640-
}
3638+
}
36413639

3642-
}};
3640+
}};
36433641

36443642
if (dispatch_get_specific(IsOnSocketQueueOrTargetQueueKey))
36453643
block();
@@ -3668,7 +3666,7 @@ - (BOOL)enableReusePort:(BOOL)flag error:(NSError **)errPtr
36683666
return_from_block;
36693667
}
36703668

3671-
if ((self->flags & kDidCreateSockets) == 0)
3669+
if ((self->flags & kDidCreateSockets) == 0)
36723670
{
36733671
if (![self createSockets:&err])
36743672
{
@@ -3677,9 +3675,9 @@ - (BOOL)enableReusePort:(BOOL)flag error:(NSError **)errPtr
36773675
}
36783676

36793677
int value = flag ? 1 : 0;
3680-
if (self->socket4FD != SOCKET_NULL)
3678+
if (self->socket4FD != SOCKET_NULL)
36813679
{
3682-
int error = setsockopt(self->socket4FD, SOL_SOCKET, SO_REUSEPORT, (const void *)&value, sizeof(value));
3680+
int error = setsockopt(self->socket4FD, SOL_SOCKET, SO_REUSEPORT, (const void *)&value, sizeof(value));
36833681

36843682
if (error)
36853683
{
@@ -3690,9 +3688,9 @@ - (BOOL)enableReusePort:(BOOL)flag error:(NSError **)errPtr
36903688
result = YES;
36913689
}
36923690

3693-
if (self->socket6FD != SOCKET_NULL)
3691+
if (self->socket6FD != SOCKET_NULL)
36943692
{
3695-
int error = setsockopt(self->socket6FD, SOL_SOCKET, SO_REUSEPORT, (const void *)&value, sizeof(value));
3693+
int error = setsockopt(self->socket6FD, SOL_SOCKET, SO_REUSEPORT, (const void *)&value, sizeof(value));
36963694

36973695
if (error)
36983696
{
@@ -3732,18 +3730,18 @@ - (BOOL)enableBroadcast:(BOOL)flag error:(NSError **)errPtr
37323730
return_from_block;
37333731
}
37343732

3735-
if ((self->flags & kDidCreateSockets) == 0)
3733+
if ((self->flags & kDidCreateSockets) == 0)
37363734
{
37373735
if (![self createSockets:&err])
37383736
{
37393737
return_from_block;
37403738
}
37413739
}
37423740

3743-
if (self->socket4FD != SOCKET_NULL)
3741+
if (self->socket4FD != SOCKET_NULL)
37443742
{
37453743
int value = flag ? 1 : 0;
3746-
int error = setsockopt(self->socket4FD, SOL_SOCKET, SO_BROADCAST, (const void *)&value, sizeof(value));
3744+
int error = setsockopt(self->socket4FD, SOL_SOCKET, SO_BROADCAST, (const void *)&value, sizeof(value));
37473745

37483746
if (error)
37493747
{

0 commit comments

Comments
 (0)