void NewX509::setupTmpCtx() { pki_x509 *signcert; pki_x509req *req = NULL; pki_key *key = NULL; a1int serial; QString errtxt; // initially create temporary ctx cert if (ctx_cert) delete(ctx_cert); ctx_cert = new pki_x509(); if (fromReqCB->isChecked()) { req = getSelectedReq(); ctx_cert->setSubject(req->getSubject()); if (req) key = req->getRefKey(); } else { ctx_cert->setSubject(getX509name()); key = getSelectedKey(); } if (key) ctx_cert->setPubKey(key); // Step 2 - select Signing if (foreignSignRB->isChecked()) { signcert = getSelectedSigner(); serial = signcert->getCaSerial(); } else { signcert = ctx_cert; ctx_cert->setIssuer(ctx_cert->getSubject()); serial.setHex(serialNr->text()); } ctx_cert->setSerial(serial); initCtx(ctx_cert, signcert, req); }
int *readBinary(int bits, int num, int *returnSize) { int n = combination(bits, num); int *ret = malloc(sizeof(int) * n); Ctx ctx, *p = &ctx; initCtx(p, bits, num); int *st = malloc(sizeof(int) * num); int i; for (i = 0; next(p); i++) { snapshot(p, st); ret[i] = buildFromBits(st, num); } *returnSize = n; free(st); finitCtx(p); return ret; }
static pid_t getOneAppProcess(uid_t uid, int appProcessPid, struct ctx *ctx) { if (!ctx->initialized) { int ret = initCtx(uid, appProcessPid, ctx); if (ret < 0) { return ret; } } char *eptr; while ((eptr = (char *)memchr(ctx->buf_ptr, '\n', ctx->buf_len)) == NULL) { int ret = refillBuffer(ctx); if (ret == 0) { return -ERANGE; } if (ret < 0) { return ret; } } *eptr = '\0'; char *pid_eptr = NULL; errno = 0; long pid = strtol(ctx->buf_ptr, &pid_eptr, 10); if (errno != 0) { return -errno; } if (pid_eptr != eptr) { return -EINVAL; } ctx->buf_len -= (eptr - ctx->buf_ptr) + 1; ctx->buf_ptr = eptr + 1; return (pid_t)pid; }