From df9f51338766ca090aaa2ed9818213eb7e2b8d8c Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 12 Aug 2009 02:52:00 +0000 Subject: [PATCH] * configure.in (rb_cv_broken_crypt): needs more checks. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ configure.in | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index b2f55e0ebd..c28c11de87 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Wed Aug 12 11:51:51 2009 Nobuyoshi Nakada + + * configure.in (rb_cv_broken_crypt): needs more checks. + Wed Aug 12 08:39:15 2009 Yukihiro Matsumoto * sprintf.c (rb_str_format): should preserve format encoding diff --git a/configure.in b/configure.in index a2a7c594eb..c0b2d62f20 100644 --- a/configure.in +++ b/configure.in @@ -769,12 +769,25 @@ when(darwin*) RUBY_PREPEND_OPTION(LIBS, -lobjc) #include #include #include + int main() { - char buf[256]; - strcpy(buf, crypt("", "\xE0\xA0")); - return strcmp(buf, crypt("", "\xE0\xA0")); + int i; + for (i = 0; i < 128*128; i++) { + char salt[2], buf[256], *s; + salt[0] = 0x80 | (i & 0x7f); + salt[1] = 0x80 | (i >> 7); + strcpy(buf, crypt("", salt)); + if (strcmp(buf, s = crypt("", salt))) { +#if 0 + printf("%.2x%.2x: %s -> %s\n", (unsigned char)salt[0], (unsigned char)salt[1], + buf+2, s+2); +#endif + return 1; + } + } + return 0; } ], rb_cv_broken_crypt=no,