OSDN Git Service

* net.cc (dup_ent): Use IsBadStringPtr for alignment checks. Don't use a known
authorcgf <cgf>
Tue, 4 Nov 2003 13:15:47 +0000 (13:15 +0000)
committercgf <cgf>
Tue, 4 Nov 2003 13:15:47 +0000 (13:15 +0000)
bad pointer.

winsup/cygwin/ChangeLog
winsup/cygwin/net.cc

index 8eae557..beea371 100644 (file)
@@ -1,3 +1,8 @@
+2003-11-04  Christopher Faylor  <cgf@redhat.com>
+
+       * net.cc (dup_ent): Use IsBadStringPtr for alignment checks.  Don't use
+       a known bad pointer.
+
 2003-11-03  Corinna Vinschen  <corinna@vinschen.de>
 
        * net.cc (dup_ent): Move Win 95 misalignment recogition before
index f956cbd..835885b 100644 (file)
@@ -506,13 +506,12 @@ dup_ent (void *old, void *src0, struct_type type)
        {
          /* Windows 95 idiocy.  Structure is misaligned on Windows 95.
             Kludge around this by trying a different pointer alignment.  */
-         if (IsBadReadPtr (src->s_proto, sizeof (src->s_proto))
-             && !IsBadReadPtr (((pservent *) src)->s_proto, sizeof (src->s_proto)))
-           s_proto = ((pservent *) src)->s_proto;
-         else
+         if (!IsBadStringPtr (src->s_proto, 0x7fffffff))
            s_proto = src->s_proto;
+         else if (!IsBadStringPtr (((pservent *) src)->s_proto, 0x7fffffff))
+           s_proto = ((pservent *) src)->s_proto;
+         sz += (protolen = strlen_round (s_proto));
        }
-      sz += (protolen = strlen_round (s_proto));
     }
   else if (type == is_hostent)
     {