* *.c (*): initialize lock_arg to a copy of a static
authorMark Eichin <eichin@mit.edu>
Thu, 16 Nov 1995 03:08:18 +0000 (03:08 +0000)
committerMark Eichin <eichin@mit.edu>
Thu, 16 Nov 1995 03:08:18 +0000 (03:08 +0000)
  (thus zero) struct flock, to avoid panic'ing sunos 4.1.4.

If you call fcntl F_SETLKW with l_type == F_UNLCK and l_xxx == 15
(GRANT_LOCK_FLAG) you'll panic sunos 4.1.4 with
assertion failed: ld->l_xxx != GRANT_LOCK_FLAG, file: ../../ufs/ufs_lockf.c, line: 995

Since automatic structs like these have random values in uninitialized
fields, we initialize from a static struct (since using memset in this
case is abhorrent, and naming l_xxx is non POSIX.)

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@7109 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/popper/ChangeLog
src/appl/popper/pop_dropcopy.c
src/appl/popper/pop_updt.c
src/lib/kdb4/ChangeLog
src/lib/kdb4/krb_dbm.c
src/lib/krb4/ChangeLog
src/lib/krb4/tf_util.c
src/lib/krb5/ccache/file/ChangeLog
src/lib/krb5/ccache/file/fcc_maybe.c
src/lib/krb5/os/ChangeLog
src/lib/krb5/os/lock_file.c

index f32e06e78d9b73b56ac60a41d6b598d789966c08..bd9885fd068794d4dd817a6df17e601d8558065e 100644 (file)
@@ -6,6 +6,15 @@ Fri Jul 7 15:44:56 EDT 1995    Paul Park       (pjpark@mit.edu)
        * Makefile.in - Remove all explicit library handling.
        * configure.in - add USE_KADM_LIBRARY and KRB5_LIBRARIES.
 
+Wed Nov 15 20:36:33 1995  Mark Eichin  <eichin@cygnus.com>
+
+       * pop_updt.c (pop_updt): initialize lock_arg to a copy of a static
+       (thus zero) struct flock, to avoid panic'ing sunos 4.1.4.
+
+Wed Nov 15 20:35:19 1995  Mark Eichin  <eichin@cygnus.com>
+
+       * pop_dropcopy.c (pop_dropcopy): initialize lock_arg to a copy of
+       a static (thus zero) struct flock, to avoid panic'ing sunos 4.1.4.
 
 Thu Jun 15 17:38:06 EDT 1995   Paul Park       (pjpark@mit.edu)
        * Makefile.in - Change explicit library names to -l<lib> form, and
index 130989bb4f204c939a3a425c12905feb3c64251d..e745db902633d72a5751e3e4f70fd954e884e044 100644 (file)
@@ -46,7 +46,10 @@ struct passwd        *       pwp;
     off_t                   offset;                 /*  Old/New boundary */
     int                     nchar;                  /*  Bytes written/read */
 #ifdef POSIX_FILE_LOCKS
+    static struct flock flock_zero;
     struct flock            lock_arg;
+
+    lock_arg = flock_zero;
 #endif
 
     /*  Create a temporary maildrop into which to copy the updated maildrop */
index 306f6707f9bf65426f8dee6e997f124f940e184d..1902793421282c3f4fe4ccaa29b07f7bf6227261 100644 (file)
@@ -55,7 +55,10 @@ POP     *   p;
 
     int                     begun;                  /*  Sanity check */
 #ifdef POSIX_FILE_LOCKS
+    static struct flock flock_zero;
     struct flock            lock_arg;
+
+    lock_arg = flock_zero;
 #endif
 
 #ifdef DEBUG
index ba30b9ae61259313f3d99d3846b64a0aad0964cc..46e1eb3cc014998457439f4e1569dcb91c760010 100644 (file)
@@ -1,3 +1,8 @@
+Wed Nov 15 20:37:30 1995  Mark Eichin  <eichin@cygnus.com>
+
+       * krb_dbm.c (kerb_dbl_lock): initialize f to a copy of a static
+       (thus zero) struct flock, to avoid panic'ing sunos 4.1.4.
+       (kerb_dbl_unlocK): ditto.
 
 Thu Jun 15 18:06:24 EDT 1995   Paul Park       (pjpark@mit.edu)
        * configure.in - Create symlink for archive when we build it.
index 7dfb6bcef8e602bfca28164692674594571229ac..b9baf97558e23d0c68ba2d8bb6d08e44838c9cbb 100644 (file)
@@ -731,8 +731,11 @@ static int kerb_dbl_lock(mode)
     int     mode;
 {
 #ifdef POSIX_FILE_LOCKS
+    static struct flock flock_zero;
     struct flock f;
     int rv;
+
+    f = flock_zero;
 #else
     int flock_mode;
 #endif
@@ -792,7 +795,10 @@ static int kerb_dbl_lock(mode)
 static void kerb_dbl_unlock()
 {
 #ifdef POSIX_FILE_LOCKS
+    static struct flock flock_zero;
     struct flock f;
+
+    f = flock_zero;
 #endif
     
     if (!mylock) {             /* lock already unlocked */
index 8a090da6858f598ff613bf7e7932e66a907ba72d..5cfac77d262a1008ba5b5c3a15e3d32e73cf70bb 100644 (file)
@@ -1,3 +1,8 @@
+Wed Nov 15 20:38:38 1995  Mark Eichin  <eichin@cygnus.com>
+
+       * tf_util.c (emul_flock): initialize f to a copy of a static
+       (thus zero) struct flock, to avoid panic'ing sunos 4.1.4.
+
 Sun Nov 12 05:26:08 1995  Mark W. Eichin  <eichin@cygnus.com>
 
        * g_cnffile.c (krb__get_srvtabname): new function, looks up
index 02af59d4bb1c73d6d7c793f7620e9ac455e599bf..7761b3d583398079b05a1b1fbc4580520f5628f5 100644 (file)
@@ -76,8 +76,11 @@ int utimes(path, times)
 int emul_flock(fd, cmd)
     int fd, cmd;
 {
+    static struct flock flock_zero;
     struct flock f;
 
+    f = flock_zero;
+
     memset(&f, 0, sizeof (f));
 
     if (cmd & LOCK_UN)
index 65a0d6e0d1e8b6b57ae78740ba4dde7fb10c7562..f8b252791881d95d0ae2b30d3d2172ab97f18122 100644 (file)
@@ -52,6 +52,12 @@ Wed July  5 15:52:31 1995  James Mattly  <mattly@fusion.com>
        * fcc_gennew.c conditons for HAS_MACSOCK_H and THREEPARAMOPEN
        * fcc_maybe.c conditons for HAS_MACSOCK_H
 
+Wed Nov 15 20:39:18 1995  Mark Eichin  <eichin@cygnus.com>
+
+       * fcc_maybe.c (fcc_lock_file_posix): initialize lock_arg to a copy
+       of a static (thus zero) struct flock, to avoid panic'ing sunos
+       4.1.4.
+
 Wed Jun 14 23:54:09 1995  Theodore Y. Ts'o  (tytso@dcl)
 
        * fcc_errs.c (krb5_fcc_interpret): Add #ifdef around switch
index ce7d033e4ee0d92130320f09501e8ca2ba2eacd3..30657b29d616c6caf83c9c00d0320a19d0c5fd64 100644 (file)
@@ -75,6 +75,9 @@ int lockunlock;
 
     int lock_cmd = F_SETLKW;
     struct flock lock_arg;
+    static struct flock flock_zero;
+
+    lock_arg = flock_zero;
 #define lock_flag lock_arg.l_type
     lock_flag = -1;
 
index cf2c456240f0237638d336debc8db295832ff09c..bd58f06e87c3af6cffd660c34be9d729787ded56 100644 (file)
@@ -1,3 +1,8 @@
+Wed Nov 15 20:40:03 1995  Mark Eichin  <eichin@cygnus.com>
+
+       * lock_file.c (krb5_lock_file): initialize lock_arg to a copy of a
+       static (thus zero) struct flock, to avoid panic'ing sunos 4.1.4.
+
 Sun Nov 12 05:31:21 1995  Mark W. Eichin  <eichin@cygnus.com>
 
        * def_realm.c (krb5_get_default_realm): check for PROF_NO_PROFILE
index 5571521b9f891d579c9ce427fc11af481b7ccd3e..4994caf082a9028b5e569a16f21e0660b51a9576 100644 (file)
@@ -59,7 +59,9 @@ krb5_lock_file(context, fd, mode)
 {
 #ifdef POSIX_FILE_LOCKS
     int lock_cmd = F_SETLKW;
+    static struct flock flock_zero;
     struct flock lock_arg;
+    lock_arg = flock_zero;
 #define lock_flag lock_arg.l_type
     lock_flag = -1;
 #else