[openssl-dev] [openssl.org #3733] ZOS 1.0.1k bug report with fix.
Randall Geyer via RT
rt at openssl.org
Sat Mar 7 17:14:17 UTC 2015
util/mkbuildinf.pl builds an invalid char array, if the associated *OS390* Configure entry contain backslashes(\).
Our configure entry:
"OS390-Unix","c89:-O2 -Wc,langlvl\\\(extended\\\),longname,enum\\\(int\\\),float\\\(ieee\\\),exportall,xplink\\\(callback\\\),target\\\(zOSV1R12\\\) -Wl,xplink,compat=ZOSV1R12 -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H -DOS390 -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE::-Wc,rent:::THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR::::::::::::::::::os390-shared:-Wc,dll:-Wl,dll:.so:",
Solution - new util/mkbuildinf.pl:
#!/usr/local/bin/perl
my ($cflags, $platform) = @ARGV;
$cflags = "compiler: $cflags";
$date = localtime();
print <<"END_OUTPUT";
#ifndef MK1MF_BUILD
/* auto-generated by util/mkbuildinf.pl for crypto/cversion.c */
#define CFLAGS cflags
/*
* Generate CFLAGS as an array of individual characters. This is a
* workaround for the situation where CFLAGS gets too long for a C90 string
* literal
*/
static const char cflags[] = {
END_OUTPUT
my $ctr = 0;
foreach my $c (split //, $cflags) {
# Max 18 characters per line
if (($ctr++ % 18) == 0) {
if ($ctr != 1) {
print "\n";
}
print " ";
}
$c =~ s|\\|\\\\|g;
print "'$c',";
}
print <<"END_OUTPUT";
'\\0'
};
#define PLATFORM "platform: $platform"
#define DATE "built on: $date"
#endif
END_OUTPUT
More information about the openssl-dev
mailing list