My bad, I overlooked the dereference operator. Thanks for correcting me.
On 05/04/2015 10:36 AM, Stephan Mühlstrasser wrote: > Am 04.05.15 um 16:19 schrieb John Foley: >> I think you're wrong about sizeof and pointers. It'll return 4 or 8 >> depending if it's a 32 or 64 bit system. Try the following code: >> >> #include <stdio.h> >> >> typedef struct _s1 { >> int x; >> int y; >> int z; >> } S1; >> >> typedef struct _s2 { >> double d1; >> double d2; >> double d3; >> double d4; >> int x1; >> int x2; >> } S2; >> >> int main (int argc, char *argv[]) { >> S1 *first; >> S2 *second; >> >> printf("%d %d\n", sizeof(first), sizeof(second)); >> } > > Yes, but that is different from what is relevant in the commit > 53ba0a9e91ad203de2943edaf1090ab17ec435fa. > > You're right that in your test program you will get always different > output on 32-bit and 64-bit systems because the pointer size is > different. > > But the code in the OpenSSL uses "sizeof(*pointer)" and not > "sizeof(pointer)". "sizeof(*pointer)" gets the size of the structure > to which "pointer" points. > > So try the following in your test program > > printf("%d %d\n", sizeof(*first), sizeof(*second)); > > This might return different output on 32-bit and 64-bit systems, but > it might also return the same output, depending on the size of the > basic types and the padding in the structures. > >> You're right about the memset, good catch. So it appears there are two >> issues with this commit. >> >> >> >> On 05/04/2015 09:35 AM, Stephan Mühlstrasser wrote: >>> Am 04.05.15 um 14:51 schrieb John Foley: >>>> Is anyone seeing a segmentation fault during the test_verify phase of >>>> make test on 32-bit systems? I haven't done a full triage yet. >>>> But it >>>> appears to have been introduced by >>>> 5b38d54753acdabbf6b1d5e15d38ee81fb0612a2. The problem no longer >>>> occurs >>>> when backing out this commit. This could be a faulty commit since the >>>> sizeof invocations in this commit would return different values for >>>> 32/64 bit systems. >>> >>> The sizeof invocations do not return the pointer sizes, but the size >>> of the structures pointed to. >>> >>> The problem is that there's apparently a copy&paste error: >>> >>> https://github.com/openssl/openssl/commit/53ba0a9e91ad203de2943edaf1090ab17ec435fa >>> >>> >>> >>> 172 memset(param, 0, sizeof *paramid); >>> 173 memset(paramid, 0, sizeof *paramid); >>> >>> The first memset should be fixed to use "*param" instead of "*paramid": >>> >>> memset(param, 0, sizeof *param); >>> >>> Regards >>> Stephan >>> _______________________________________________ >>> openssl-dev mailing list >>> To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev >>> >> >> _______________________________________________ >> openssl-dev mailing list >> To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev >> > > > _______________________________________________ > openssl-dev mailing list > To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev > . > _______________________________________________ openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev