@@ -463,12 +463,16 @@ tcp_ping6(JNIEnv *env, SOCKETADDRESS *sa, SOCKETADDRESS *netif, jint timeout,
463463
464464 // set TTL
465465 if (ttl > 0 ) {
466- setsockopt (fd , IPPROTO_IPV6 , IPV6_UNICAST_HOPS , & ttl , sizeof (ttl ));
466+ if (setsockopt (fd , IPPROTO_IPV6 , IPV6_UNICAST_HOPS , & ttl , sizeof (ttl )) < 0 ) {
467+ NET_ThrowNew (env , errno , "setsockopt IPV6_UNICAST_HOPS failed" );
468+ close (fd );
469+ return JNI_FALSE ;
470+ }
467471 }
468472
469473 // A network interface was specified, so let's bind to it.
470474 if (netif != NULL ) {
471- if (bind (fd , & netif -> sa , sizeof (struct sockaddr_in6 )) < 0 ) {
475+ if (bind (fd , & netif -> sa , sizeof (struct sockaddr_in6 )) < 0 ) {
472476 NET_ThrowNew (env , errno , "Can't bind socket" );
473477 close (fd );
474478 return JNI_FALSE ;
@@ -557,11 +561,19 @@ ping6(JNIEnv *env, jint fd, SOCKETADDRESS *sa, SOCKETADDRESS *netif,
557561 setsockopt (fd , SOL_RAW , IPV6_CHECKSUM , & csum_offset , sizeof (int ));
558562#endif
559563
560- setsockopt (fd , SOL_SOCKET , SO_RCVBUF , & size , sizeof (size ));
564+ if (setsockopt (fd , SOL_SOCKET , SO_RCVBUF , & size , sizeof (size )) < 0 ) {
565+ NET_ThrowNew (env , errno , "setsockopt SO_RCVBUF failed" );
566+ close (fd );
567+ return JNI_FALSE ;
568+ }
561569
562570 // sets the ttl (max number of hops)
563571 if (ttl > 0 ) {
564- setsockopt (fd , IPPROTO_IPV6 , IPV6_UNICAST_HOPS , & ttl , sizeof (ttl ));
572+ if (setsockopt (fd , IPPROTO_IPV6 , IPV6_UNICAST_HOPS , & ttl , sizeof (ttl )) < 0 ) {
573+ NET_ThrowNew (env , errno , "setsockopt IPV6_UNICAST_HOPS failed" );
574+ close (fd );
575+ return JNI_FALSE ;
576+ }
565577 }
566578
567579 // a specific interface was specified, so let's bind the socket
0 commit comments