Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}