struct NaClDesc *NaClDescSyncSocketMake(NaClHandle handle) { struct NaClDescSyncSocket *desc = malloc(sizeof(*desc)); if (NULL == desc) { return NULL; } if (!NaClDescSyncSocketCtor(desc, handle)) { free(desc); return NULL; } return &desc->base; }
int NaClDescSyncSocketInternalize(struct NaClDesc **baseptr, struct NaClDescXferState *xfer) { int rv; NaClHandle h; struct NaClDescSyncSocket *ndssp; NaClLog(4, "Entered NaClDescSyncSocketInternalize\n"); rv = -NACL_ABI_EIO; h = NACL_INVALID_HANDLE; ndssp = NULL; if (xfer->next_handle == xfer->handle_buffer_end) { NaClLog(LOG_ERROR, ("NaClSyncSocketInternalize: no descriptor" " left in xfer state\n")); rv = -NACL_ABI_EIO; goto cleanup; } ndssp = malloc(sizeof *ndssp); if (NULL == ndssp) { NaClLog(LOG_ERROR, "NaClSyncSocketInternalize: no memory\n"); rv = -NACL_ABI_ENOMEM; goto cleanup; } if (!NaClDescSyncSocketCtor(ndssp, *xfer->next_handle)) { NaClLog(LOG_ERROR, "NaClSyncSocketInternalize: descriptor ctor error\n"); rv = -NACL_ABI_EIO; goto cleanup; } *xfer->next_handle++ = NACL_INVALID_HANDLE; *baseptr = (struct NaClDesc *) ndssp; rv = 0; cleanup: if (rv < 0) { free(ndssp); } return rv; }