Name the on-stack union of compat thunks.

C does not permit an anonymous union at a top-level scope.

Pointy hat to:	jhb
This commit is contained in:
John Baldwin 2020-08-26 22:36:08 +00:00
parent df665abd34
commit 62cddd0e03

View File

@ -440,7 +440,7 @@ cryptof_ioctl(
struct crypt_aead aeadc; struct crypt_aead aeadc;
struct crypt_kop kopc; struct crypt_kop kopc;
#endif #endif
}; } thunk;
#ifdef COMPAT_FREEBSD32 #ifdef COMPAT_FREEBSD32
u_long cmd32; u_long cmd32;
void *data32; void *data32;
@ -452,29 +452,30 @@ cryptof_ioctl(
cmd32 = cmd; cmd32 = cmd;
data32 = data; data32 = data;
cmd = CIOCGSESSION; cmd = CIOCGSESSION;
data = &sopc; data = &thunk.sopc;
session_op_from_32((struct session_op32 *)data32, &sopc); session_op_from_32((struct session_op32 *)data32, &thunk.sopc);
break; break;
case CIOCGSESSION232: case CIOCGSESSION232:
cmd32 = cmd; cmd32 = cmd;
data32 = data; data32 = data;
cmd = CIOCGSESSION2; cmd = CIOCGSESSION2;
data = &sopc; data = &thunk.sopc;
session2_op_from_32((struct session2_op32 *)data32, &sopc); session2_op_from_32((struct session2_op32 *)data32,
&thunk.sopc);
break; break;
case CIOCCRYPT32: case CIOCCRYPT32:
cmd32 = cmd; cmd32 = cmd;
data32 = data; data32 = data;
cmd = CIOCCRYPT; cmd = CIOCCRYPT;
data = &copc; data = &thunk.copc;
crypt_op_from_32((struct crypt_op32 *)data32, &copc); crypt_op_from_32((struct crypt_op32 *)data32, &thunk.copc);
break; break;
case CIOCCRYPTAEAD32: case CIOCCRYPTAEAD32:
cmd32 = cmd; cmd32 = cmd;
data32 = data; data32 = data;
cmd = CIOCCRYPTAEAD; cmd = CIOCCRYPTAEAD;
data = &aeadc; data = &thunk.aeadc;
crypt_aead_from_32((struct crypt_aead32 *)data32, &aeadc); crypt_aead_from_32((struct crypt_aead32 *)data32, &thunk.aeadc);
break; break;
case CIOCKEY32: case CIOCKEY32:
case CIOCKEY232: case CIOCKEY232:
@ -484,8 +485,8 @@ cryptof_ioctl(
cmd = CIOCKEY; cmd = CIOCKEY;
else else
cmd = CIOCKEY2; cmd = CIOCKEY2;
data = &kopc; data = &thunk.kopc;
crypt_kop_from_32((struct crypt_kop32 *)data32, &kopc); crypt_kop_from_32((struct crypt_kop32 *)data32, &thunk.kopc);
break; break;
} }
#endif #endif
@ -494,8 +495,8 @@ cryptof_ioctl(
case CIOCGSESSION: case CIOCGSESSION:
case CIOCGSESSION2: case CIOCGSESSION2:
if (cmd == CIOCGSESSION) { if (cmd == CIOCGSESSION) {
session2_op_from_op(data, &sopc); session2_op_from_op(data, &thunk.sopc);
sop = &sopc; sop = &thunk.sopc;
} else } else
sop = (struct session2_op *)data; sop = (struct session2_op *)data;