+3531. [bug] win32: A uninitialized value could be returned on out
+ of memory. [RT #32960]
+
3530. [contrib] Better RTT tracking in queryperf. [RT #30128]
3526. [cleanup] Set up dependencies for unit tests correctly during
sock->sendcmsgbuf = NULL;
/*
- * set up cmsg buffers
+ * Set up cmsg buffers.
*/
cmsgbuflen = 0;
#if defined(USE_CMSG) && defined(ISC_PLATFORM_HAVEIN6PKTINFO)
sock->tag = NULL;
/*
- * set up list of readers and writers to be initially empty
+ * Set up list of readers and writers to be initially empty.
*/
ISC_LIST_INIT(sock->recv_list);
ISC_LIST_INIT(sock->send_list);
sock->bound = 0;
/*
- * initialize the lock
+ * Initialize the lock.
*/
result = isc_mutex_init(&sock->lock);
if (result != ISC_R_SUCCESS) {
}
/*
- * Initialize readable and writable events
+ * Initialize readable and writable events.
*/
ISC_EVENT_INIT(&sock->readable_ev, sizeof(intev_t),
ISC_EVENTATTR_NOPURGE, NULL, ISC_SOCKEVENT_INTR,
ISC_LINK_INIT(sock, link);
/*
- * set up list of readers and writers to be initially empty
+ * Set up list of readers and writers to be initially empty.
*/
ISC_LIST_INIT(sock->recv_list);
ISC_LIST_INIT(sock->send_list);
sock->recvbuf.remaining = 0;
sock->recvbuf.base = isc_mem_get(manager->mctx, sock->recvbuf.len); // max buffer size
if (sock->recvbuf.base == NULL) {
- sock->magic = 0;
+ result = ISC_R_NOMEMORY;
goto error;
}
/*
- * initialize the lock
+ * Initialize the lock.
*/
result = isc_mutex_init(&sock->lock);
- if (result != ISC_R_SUCCESS) {
- sock->magic = 0;
- isc_mem_put(manager->mctx, sock->recvbuf.base, sock->recvbuf.len);
- sock->recvbuf.base = NULL;
+ if (result != ISC_R_SUCCESS)
goto error;
- }
socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
"allocated");
return (ISC_R_SUCCESS);
error:
+ if (sock->recvbuf.base != NULL)
+ isc_mem_put(manager->mctx, sock->recvbuf.base, sock->recvbuf.len);
isc_mem_put(manager->mctx, sock, sizeof(*sock));
return (result);