]> git.eshelyaron.com Git - emacs.git/commitdiff
* editfns.c (Fuser_login_name, Fuser_full_name): Signal an error
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 13 Oct 2011 06:58:12 +0000 (23:58 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 13 Oct 2011 06:58:12 +0000 (23:58 -0700)
if a uid argument is out of range, rather than relying on
undefined behavior.

src/ChangeLog
src/editfns.c

index c2cf656b1010ae5bc4cdd2cd487b361b00e4ec89..5826a4bd412d3a1c5c890b0e8177c035560eb8f0 100644 (file)
        (lo_time): Use int, not EMACS_INT, when int suffices.
        (lisp_time_argument): Check for usec out of range.
        (Fencode_time): Don't assume fixnum fits in int.
+       (Fuser_login_name, Fuser_full_name): Signal an error
+       if a uid argument is out of range, rather than relying on
+       undefined behavior.
        * emacs.c (gdb_valbits, gdb_gctypebits): Now int, not EMACS_INT.
        (gdb_data_seg_bits): Now uintptr_t, not EMACS_INT.
        (PVEC_FLAG, gdb_array_mark_flag): Now ptrdiff_t, not EMACS_INT.
index ac9c20ced650761d868a558e3026455b4684991f..8489a47649e1ddaced96bbb0e47006f772c40e46 100644 (file)
@@ -1247,7 +1247,7 @@ of the user with that uid, or nil if there is no such user.  */)
   if (NILP (uid))
     return Vuser_login_name;
 
-  id = XFLOATINT (uid);
+  CONS_TO_INTEGER (uid, uid_t, id);
   BLOCK_INPUT;
   pw = getpwuid (id);
   UNBLOCK_INPUT;
@@ -1306,7 +1306,8 @@ name, or nil if there is no such user.  */)
     return Vuser_full_name;
   else if (NUMBERP (uid))
     {
-      uid_t u = XFLOATINT (uid);
+      uid_t u;
+      CONS_TO_INTEGER (uid, uid_t, u);
       BLOCK_INPUT;
       pw = getpwuid (u);
       UNBLOCK_INPUT;