switch (cmd) {
case PTM_GET_CAPABILITY:
- if (!out_bufsz) {
+ if (out_bufsz != sizeof(ptm_cap)) {
struct iovec iov = { arg, sizeof(uint8_t) };
fuse_reply_ioctl_retry(req, &iov, 1, NULL, 0);
} else {
break;
case PTM_INIT:
- init_p = (ptm_init *)in_buf;
+ if (in_bufsz != sizeof(ptm_init)) {
+ struct iovec iov = { arg, sizeof(uint8_t) };
+ fuse_reply_ioctl_retry(req, &iov, 1, NULL, 0);
+ } else {
+ init_p = (ptm_init *)in_buf;
- worker_thread_end();
+ worker_thread_end();
- TPMLIB_Terminate();
+ TPMLIB_Terminate();
- tpm_running = 0;
- if ((res = tpm_start(init_p->u.req.init_flags))) {
- logprintf(STDERR_FILENO,
- "Error: Could not initialize the TPM.\n");
- } else {
- tpm_running = 1;
+ tpm_running = 0;
+ if ((res = tpm_start(init_p->u.req.init_flags))) {
+ logprintf(STDERR_FILENO,
+ "Error: Could not initialize the TPM.\n");
+ } else {
+ tpm_running = 1;
+ }
+ fuse_reply_ioctl(req, 0, &res, sizeof(res));
}
- fuse_reply_ioctl(req, 0, &res, sizeof(res));
break;
case PTM_STOP:
if (!tpm_running)
goto error_not_running;
- if (!out_bufsz) {
+ if (out_bufsz != sizeof(ptm_est)) {
struct iovec iov = { arg, sizeof(uint8_t) };
fuse_reply_ioctl_retry(req, &iov, 1, NULL, 0);
} else {
if (!tpm_running)
goto error_not_running;
- if (!in_bufsz) {
+ if (in_bufsz != sizeof(ptm_reset_est)) {
struct iovec iov = { arg, sizeof(uint32_t) };
fuse_reply_ioctl_retry(req, &iov, 1, NULL, 0);
} else {
break;
case PTM_SET_LOCALITY:
- if (!in_bufsz) {
+ if (in_bufsz != sizeof(ptm_loc)) {
struct iovec iov = { arg, sizeof(uint32_t) };
fuse_reply_ioctl_retry(req, &iov, 1, NULL, 0);
} else {
if (!tpm_running)
goto error_not_running;
- if (!in_bufsz) {
+ if (in_bufsz != sizeof(ptm_hdata)) {
struct iovec iov = { arg, sizeof(uint32_t) };
fuse_reply_ioctl_retry(req, &iov, 1, NULL, 0);
} else {