ruby-changes:23419
From: akr <ko1@a...>
Date: Wed, 25 Apr 2012 23:05:20 +0900 (JST)
Subject: [ruby-changes:23419] akr:r35470 (trunk): * ext/socket/raddrinfo.c (init_unix_addrinfo): refine error message
akr 2012-04-25 23:05:10 +0900 (Wed, 25 Apr 2012) New Revision: 35470 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35470 Log: * ext/socket/raddrinfo.c (init_unix_addrinfo): refine error message format. (addrinfo_mload): show more information on "too long AF_UNIX path" error. (addrinfo_unix_path): ditto for "too short AF_UNIX address" and "too long AF_UNIX address" error. Modified files: trunk/ChangeLog trunk/ext/socket/raddrinfo.c Index: ChangeLog =================================================================== --- ChangeLog (revision 35469) +++ ChangeLog (revision 35470) @@ -1,3 +1,12 @@ +Wed Apr 25 23:02:46 2012 Tanaka Akira <akr@f...> + + * ext/socket/raddrinfo.c (init_unix_addrinfo): refine error message + format. + (addrinfo_mload): show more information on "too long AF_UNIX path" + error. + (addrinfo_unix_path): ditto for "too short AF_UNIX address" and + "too long AF_UNIX address" error. + Wed Apr 25 05:46:12 2012 Nobuyoshi Nakada <nobu@r...> * lib/optparse.rb (OptionParser#to_a): split for each lines. Index: ext/socket/raddrinfo.c =================================================================== --- ext/socket/raddrinfo.c (revision 35469) +++ ext/socket/raddrinfo.c (revision 35470) @@ -768,8 +768,9 @@ StringValue(path); if (sizeof(un.sun_path) <= (size_t)RSTRING_LEN(path)) - rb_raise(rb_eArgError, "too long unix socket path (%ldbytes given but %dbytes max)", - RSTRING_LEN(path), (int)sizeof(un.sun_path)-1); + rb_raise(rb_eArgError, + "too long unix socket path (%"PRIuSIZE" bytes given but %"PRIuSIZE" bytes max)", + (size_t)RSTRING_LEN(path), sizeof(un.sun_path)-1); MEMZERO(&un, struct sockaddr_un, 1); @@ -1304,7 +1305,9 @@ StringValue(v); if (sizeof(uaddr.sun_path) <= (size_t)RSTRING_LEN(v)) - rb_raise(rb_eSocket, "too long AF_UNIX path"); + rb_raise(rb_eSocket, + "too long AF_UNIX path (%"PRIuSIZE" bytes given but %"PRIuSIZE" bytes max)", + (size_t)RSTRING_LEN(v), sizeof(uaddr.sun_path)-1); memcpy(uaddr.sun_path, RSTRING_PTR(v), RSTRING_LEN(v)); len = (socklen_t)sizeof(uaddr); memcpy(&ss, &uaddr, len); @@ -1937,9 +1940,12 @@ s = addr->sun_path; e = (char*)addr + rai->sockaddr_len; if (e < s) - rb_raise(rb_eSocket, "too short AF_UNIX address"); + rb_raise(rb_eSocket, "too short AF_UNIX address: %"PRIuSIZE" bytes given for minimum %"PRIuSIZE" bytes.", + (size_t)rai->sockaddr_len, (size_t)(s - (char *)addr)); if (addr->sun_path + sizeof(addr->sun_path) < e) - rb_raise(rb_eSocket, "too long AF_UNIX address"); + rb_raise(rb_eSocket, + "too long AF_UNIX path (%"PRIuSIZE" bytes given but %"PRIuSIZE" bytes max)", + (size_t)(e - addr->sun_path), sizeof(addr->sun_path)); while (s < e && *(e-1) == '\0') e--; return rb_str_new(s, e-s); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/