diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2015-01-03 19:53:49 +0300 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2015-01-03 19:53:49 +0300 |
commit | 5e62a3d016633d4d97906f0f73298dc8e8b6a42b (patch) | |
tree | b0cdea416496237b3a15ea6f123371aff6168ecc | |
parent | 9dca6acaac3a49f1ff8ba9d3ca78853da6f59ae1 (diff) |
libpwdgrp: use a better estimate of max struct size
Previous code's trick with bitwise OR was giving this on 32-bit x86:
sizeof(struct passwd):28
sizeof(struct group):16
sizeof(struct spwd):36
sizeof(struct_result):60
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | libpwdgrp/pwd_grp.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/libpwdgrp/pwd_grp.c b/libpwdgrp/pwd_grp.c index 539d2b01f..f3fcec859 100644 --- a/libpwdgrp/pwd_grp.c +++ b/libpwdgrp/pwd_grp.c @@ -45,11 +45,10 @@ struct passdb { uint8_t numfields; FILE *fp; char *malloced; - char struct_result[0 - | sizeof(struct passwd) - | sizeof(struct group) - IF_USE_BB_SHADOW( | sizeof(struct spwd) ) - /* bitwise OR above is poor man's max(a,b,c) */ + char struct_result[ + /* Should be max(sizeof passwd,group,spwd), but this will do: */ + IF_NOT_USE_BB_SHADOW(sizeof(struct passwd)) + IF_USE_BB_SHADOW(sizeof(struct spwd)) ]; }; |