[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]