diff -ruN userv-1.0.0/Makefile.in userv-1.0.1/Makefile.in --- userv-1.0.0/Makefile.in Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/Makefile.in Thu Jul 27 01:08:33 2000 @@ -28,6 +28,7 @@ M4=m4 M4FLAGS= LEX=flex +MD5SUM=@MD5SUM_SIMPLE@ CWD=$(shell pwd) INSTALL_GROUP=root @@ -123,7 +124,9 @@ $(CC) -c $(CPPFLAGS) $(CFLAGS) lexer.c -o $@ pcsum.h: common.h config.h config.status Makefile - cat $^ | md5sum | sed -e 's/ -$$//; s/../0x&,/g; s/,$$//;' >pcsum.h.new + cat $^ | $(MD5SUM) \ + | sed -e 's/ -$$//; s/../0x&,/g; s/,$$//;' \ + >pcsum.h.new cmp pcsum.h.new pcsum.h || mv -f pcsum.h.new pcsum.h @rm -f pcsum.h.new diff -ruN userv-1.0.0/configure userv-1.0.1/configure --- userv-1.0.0/configure Wed Apr 7 23:43:47 1999 +++ userv-1.0.1/configure Thu Jul 27 01:08:34 2000 @@ -855,11 +855,44 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +for ac_prog in md5sum md5 +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:864: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_MD5SUM_SIMPLE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$MD5SUM_SIMPLE"; then + ac_cv_prog_MD5SUM_SIMPLE="$MD5SUM_SIMPLE" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_MD5SUM_SIMPLE="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +MD5SUM_SIMPLE="$ac_cv_prog_MD5SUM_SIMPLE" +if test -n "$MD5SUM_SIMPLE"; then + echo "$ac_t""$MD5SUM_SIMPLE" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$MD5SUM_SIMPLE" && break +done + CFLAGS="$CFLAGS -D_GNU_SOURCE" echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -echo "configure:863: checking for socket in -lsocket" >&5 +echo "configure:896: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -867,7 +900,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -908,12 +941,12 @@ for ac_func in setenv do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:912: checking for $ac_func" >&5 +echo "configure:945: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -962,12 +995,12 @@ echo $ac_n "checking for EPROTO""... $ac_c" 1>&6 -echo "configure:966: checking for EPROTO" >&5 +echo "configure:999: checking for EPROTO" >&5 if eval "test \"`echo '$''{'userv_cv_hdr_eproto'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -998,12 +1031,12 @@ fi echo $ac_n "checking for LOG_AUTHPRIV""... $ac_c" 1>&6 -echo "configure:1002: checking for LOG_AUTHPRIV" >&5 +echo "configure:1035: checking for LOG_AUTHPRIV" >&5 if eval "test \"`echo '$''{'userv_cv_hdr_logauthpriv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -1044,20 +1077,20 @@ echo $ac_n "checking your C compiler""... $ac_c" 1>&6 -echo "configure:1048: checking your C compiler" >&5 +echo "configure:1081: checking your C compiler" >&5 if eval "test \"`echo '$''{'dpkg_cv_c_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { strcmp("a","b") ; return 0; } EOF -if { (eval echo configure:1061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1094: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_c_works=yes else @@ -1082,20 +1115,20 @@ echo $ac_n "checking __attribute__((,,))""... $ac_c" 1>&6 -echo "configure:1086: checking __attribute__((,,))" >&5 +echo "configure:1119: checking __attribute__((,,))" >&5 if eval "test \"`echo '$''{'dpkg_cv_c_attribute_supported'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_c_attribute_supported=yes else @@ -1117,20 +1150,20 @@ echo $ac_n "checking __attribute__((noreturn))""... $ac_c" 1>&6 -echo "configure:1121: checking __attribute__((noreturn))" >&5 +echo "configure:1154: checking __attribute__((noreturn))" >&5 if eval "test \"`echo '$''{'dpkg_cv_c_attribute_noreturn'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1167: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_c_attribute_noreturn=yes else @@ -1157,20 +1190,20 @@ echo $ac_n "checking __attribute__((unused))""... $ac_c" 1>&6 -echo "configure:1161: checking __attribute__((unused))" >&5 +echo "configure:1194: checking __attribute__((unused))" >&5 if eval "test \"`echo '$''{'dpkg_cv_c_attribute_unused'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_c_attribute_unused=yes else @@ -1197,20 +1230,20 @@ echo $ac_n "checking __attribute__((format...))""... $ac_c" 1>&6 -echo "configure:1201: checking __attribute__((format...))" >&5 +echo "configure:1234: checking __attribute__((format...))" >&5 if eval "test \"`echo '$''{'dpkg_cv_attribute_format'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_attribute_format=yes else @@ -1248,7 +1281,7 @@ echo $ac_n "checking GCC warning flag(s) -Wall -Wno-implicit""... $ac_c" 1>&6 -echo "configure:1252: checking GCC warning flag(s) -Wall -Wno-implicit" >&5 +echo "configure:1285: checking GCC warning flag(s) -Wall -Wno-implicit" >&5 if test "${GCC-no}" = yes then if eval "test \"`echo '$''{'dpkg_cv_c_gcc_warn_all'+set}'`\" = set"; then @@ -1258,7 +1291,7 @@ oldcflags="${CFLAGS-}" CFLAGS="${CFLAGS-} ${CWARNS} -Wall -Wno-implicit -Werror" cat > conftest.$ac_ext < @@ -1270,7 +1303,7 @@ ; return 0; } EOF -if { (eval echo configure:1274: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1307: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_c_gcc_warn_all=yes else @@ -1296,7 +1329,7 @@ echo $ac_n "checking GCC warning flag(s) -Wwrite-strings""... $ac_c" 1>&6 -echo "configure:1300: checking GCC warning flag(s) -Wwrite-strings" >&5 +echo "configure:1333: checking GCC warning flag(s) -Wwrite-strings" >&5 if test "${GCC-no}" = yes then if eval "test \"`echo '$''{'dpkg_cv_c_gcc_warn_writestrings'+set}'`\" = set"; then @@ -1306,7 +1339,7 @@ oldcflags="${CFLAGS-}" CFLAGS="${CFLAGS-} ${CWARNS} -Wwrite-strings -Werror" cat > conftest.$ac_ext < @@ -1318,7 +1351,7 @@ ; return 0; } EOF -if { (eval echo configure:1322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_c_gcc_warn_writestrings=yes else @@ -1344,7 +1377,7 @@ echo $ac_n "checking GCC warning flag(s) -Wpointer-arith""... $ac_c" 1>&6 -echo "configure:1348: checking GCC warning flag(s) -Wpointer-arith" >&5 +echo "configure:1381: checking GCC warning flag(s) -Wpointer-arith" >&5 if test "${GCC-no}" = yes then if eval "test \"`echo '$''{'dpkg_cv_c_gcc_warn_pointerarith'+set}'`\" = set"; then @@ -1354,7 +1387,7 @@ oldcflags="${CFLAGS-}" CFLAGS="${CFLAGS-} ${CWARNS} -Wpointer-arith -Werror" cat > conftest.$ac_ext < @@ -1366,7 +1399,7 @@ ; return 0; } EOF -if { (eval echo configure:1370: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1403: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_c_gcc_warn_pointerarith=yes else @@ -1392,7 +1425,7 @@ echo $ac_n "checking GCC warning flag(s) -Wimplicit -Wnested-externs""... $ac_c" 1>&6 -echo "configure:1396: checking GCC warning flag(s) -Wimplicit -Wnested-externs" >&5 +echo "configure:1429: checking GCC warning flag(s) -Wimplicit -Wnested-externs" >&5 if test "${GCC-no}" = yes then if eval "test \"`echo '$''{'dpkg_cv_c_gcc_warn_implicit'+set}'`\" = set"; then @@ -1402,7 +1435,7 @@ oldcflags="${CFLAGS-}" CFLAGS="${CFLAGS-} ${CWARNS} -Wimplicit -Wnested-externs -Werror" cat > conftest.$ac_ext < @@ -1414,7 +1447,7 @@ ; return 0; } EOF -if { (eval echo configure:1418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1451: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* dpkg_cv_c_gcc_warn_implicit=yes else @@ -1585,6 +1618,7 @@ s%@CPP@%$CPP%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@MD5SUM_SIMPLE@%$MD5SUM_SIMPLE%g s%@OPTIMISE@%$OPTIMISE%g s%@CWARNS@%$CWARNS%g s%@VERSION@%$VERSION%g diff -ruN userv-1.0.0/configure.in userv-1.0.1/configure.in --- userv-1.0.0/configure.in Wed Apr 7 23:43:49 1999 +++ userv-1.0.1/configure.in Thu Jul 27 01:08:34 2000 @@ -41,6 +41,7 @@ AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL +AC_CHECK_PROGS(MD5SUM_SIMPLE, md5sum md5) CFLAGS="$CFLAGS -D_GNU_SOURCE" diff -ruN userv-1.0.0/debian/changelog userv-1.0.1/debian/changelog --- userv-1.0.0/debian/changelog Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/debian/changelog Thu Jul 27 01:08:34 2000 @@ -1,3 +1,15 @@ +userv (1.0.1) stable frozen unstable; urgency=high + + IMPORTANT SECURITY FIX: + * fd swapping algorithm would sometimes corrupt security-critical data + used to generate the service program's USERV_ environment variables. + For details see the 1.0.1 announcement in the userv-announce archives. + + Portability improvement: + * Look for `md5' as well as `md5sum' - installs easier on BSDs. + + -- Ian Jackson Thu, 27 Jul 2000 01:06:30 +0100 + userv (1.0.0) unstable; urgency=low * Manpage userv(1) from Ben Harris. (Debian bug #33777.) diff -ruN userv-1.0.0/servexec.c userv-1.0.1/servexec.c --- userv-1.0.0/servexec.c Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/servexec.c Thu Jul 27 01:08:34 2000 @@ -266,7 +266,8 @@ fdarray[fd].holdfd= -1; } for (fd=0; fd= 0) + fdarray[fdarray[fd].realfd].holdfd= fd; } for (fd=0; fd
-1.0.0
+1.0.1
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-1.0.0/spec.html/ch-config.html userv-1.0.1/spec.html/ch-config.html --- userv-1.0.0/spec.html/ch-config.html Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.html/ch-config.html Wed Jul 26 23:32:08 2000 @@ -586,7 +586,7 @@ User service daemon and client specification
-1.0.0
+1.0.1
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-1.0.0/spec.html/ch-envir.html userv-1.0.1/spec.html/ch-envir.html --- userv-1.0.0/spec.html/ch-envir.html Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.html/ch-envir.html Wed Jul 26 23:32:08 2000 @@ -182,7 +182,7 @@ User service daemon and client specification
-1.0.0
+1.0.1
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-1.0.0/spec.html/ch-intro.html userv-1.0.1/spec.html/ch-intro.html --- userv-1.0.0/spec.html/ch-intro.html Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.html/ch-intro.html Wed Jul 26 23:32:08 2000 @@ -58,7 +58,7 @@ User service daemon and client specification
-1.0.0
+1.0.1
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-1.0.0/spec.html/ch-ipass.html userv-1.0.1/spec.html/ch-ipass.html --- userv-1.0.0/spec.html/ch-ipass.html Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.html/ch-ipass.html Wed Jul 26 23:32:08 2000 @@ -134,7 +134,7 @@ User service daemon and client specification
-1.0.0
+1.0.1
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-1.0.0/spec.html/ch-notes.html userv-1.0.1/spec.html/ch-notes.html --- userv-1.0.0/spec.html/ch-notes.html Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.html/ch-notes.html Wed Jul 26 23:32:08 2000 @@ -215,7 +215,7 @@ User service daemon and client specification
-1.0.0
+1.0.1
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-1.0.0/spec.html/footnotes.html userv-1.0.1/spec.html/footnotes.html --- userv-1.0.0/spec.html/footnotes.html Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.html/footnotes.html Wed Jul 26 23:32:08 2000 @@ -44,7 +44,7 @@ User service daemon and client specification
-1.0.0
+1.0.1
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-1.0.0/spec.html/index.html userv-1.0.1/spec.html/index.html --- userv-1.0.0/spec.html/index.html Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.html/index.html Wed Jul 26 23:32:08 2000 @@ -101,7 +101,7 @@ User service daemon and client specification
-1.0.0
+1.0.1
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-1.0.0/spec.ps userv-1.0.1/spec.ps --- userv-1.0.0/spec.ps Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.ps Thu Jul 27 01:08:34 2000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: Basser Lout Version 3.10 (November 1996) -%%CreationDate: Mon Mar 6 18:14:17 2000 +%%CreationDate: Thu Jul 27 00:59:08 2000 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentMedia: Plain 595 842 0 white () @@ -268,7 +268,7 @@ 0.6953 1.0000 scale 200 fnt31 1031 -43()m grestore -240 fnt82 4295 12755(1.0.0)m +240 fnt82 4305 12755(1.0.1)m 9066 609 0 609 240 240 60 0 11495 LoutGr2 newpath 0 ysize 0.3 ft sub moveto xsize 0 rlineto @@ -398,7 +398,7 @@ 0 1474(6.5.)m 1200(Don')s 4(t)k 1814(gi)s 6(v)k 3(e)k 2273(access)s 2934(to)s 3173(general-purpose)s 4769(utilities)s 8851(21)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s -3052(speci\207cation)s 8591(1.0.0)s +3052(speci\207cation)s 8611(1.0.1)s grestore grestore @@ -435,7 +435,7 @@ gsave 0 LoutMargSet grestore -240 fnt84 0 13842(2)m 240 fnt82 0 52(1.0.0)m 4809(User)s +240 fnt84 0 13842(2)m 240 fnt82 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -523,7 +523,7 @@ 0 10002(with)m 482(each)s 977(other)s 1528(in)s 1771(an)s 3(y)k 2168(une)s 3(xpected)k 3313(w)s 2(ays.)k 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s -8591(1.0.0)s +8611(1.0.1)s grestore grestore @@ -891,7 +891,7 @@ grestore 192 fnt82 505 682(is)m 673(short)s 1103(for)s 1373(`user)s 1802(services',)s 2566(and)s 2890(is)s 3058(pronounced)s 4010(`you-serv)s 2(e'.)k -240 fnt82 0 52(1.0.0)m 4809(User)s 5320(service)s 6052(daemon)s +240 fnt82 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -1373,7 +1373,7 @@ 5015(the)s 5358(speci\207ed)s 6261(\207le)s 6616(descriptor;)s 240 fnt83 7678 835(action)m 240 fnt82 8325 833(must)m 8844(be)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s -8591(1.0.0)s +8611(1.0.1)s grestore grestore @@ -1715,7 +1715,7 @@ 1693(calling)s 2396(process')s 13(s)k 3323(current)s 4059(directory)s 4975(name)s 5549(from)s 6073(being)s 6658(passed)s 7354(to)s 7593(the)s 7941(service;)s 8729(the)s 480 956(null)m 907(string)s -1504(will)s 1930(be)s 2212(passed)s 2908(instead.)s 0 52(1.0.0)m +1504(will)s 1930(be)s 2212(passed)s 2908(instead.)s 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -1928,7 +1928,7 @@ 7954(the)s 8302(service)s 480 5072(user)m 938(will)s 1364(be)s 1646(the)s 1994(real)s 2406(calling)s 3109(user)s 13(.)k 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s -3052(speci\207cation)s 8591(1.0.0)s +3052(speci\207cation)s 8611(1.0.1)s grestore grestore @@ -2185,7 +2185,7 @@ 8175(for)s 8513(the)s 0 864(rele)m 6(v)k 6(ant)k 817(\207le)s 1178(descriptor)s 2193(in)s 2436(the)s 2784(client')s 13(s)k 3524(ar)s 4(guments.)k 4620(By)s 4954(def)s 2(ault)k -5675(writing)s 6418(\207ledescriptors)s 7822(remain)s 8542(open)s 0 52(1.0.0)m +5675(writing)s 6418(\207ledescriptors)s 7822(remain)s 8542(open)s 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -2412,7 +2412,7 @@ 3671(be)s 3953(set)s 4278(appropriately)s 5606(\(according)s 6681(to)s 6920(the)s 7268(details)s 7942(of)s 8213(the)s 0 5083(service)m 732(user\).)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s -2462(client)s 3052(speci\207cation)s 8591(1.0.0)s +2462(client)s 3052(speci\207cation)s 8611(1.0.1)s grestore grestore @@ -2663,7 +2663,7 @@ 628(Con\207guration)s 2618(\207le)s 3100(dir)s 5(ecti)k 3(v)k 3(es)k grestore -0 52(1.0.0)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s +0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -3032,7 +3032,7 @@ 3653(all)s 3941(the)s 4284(characters)s 5298(until)s 5786(the)s 6129(end)s 6528(of)s 6794(the)s 7137(line)s 7546(will)s 7967(be)s 8244(included)s 0 52(User)m 511(service)s 1243(daemon)s -2058(and)s 2462(client)s 3052(speci\207cation)s 8591(1.0.0)s +2058(and)s 2462(client)s 3052(speci\207cation)s 8611(1.0.1)s grestore grestore @@ -3338,7 +3338,7 @@ 240 fnt82 2252 810(refers)m 2845(to)s 3084(a)s 3250(\207le)s 3611(one)s 4013(of)s 4284(whose)s 4952(lines)s 5454(is)s 5664(the)s 6012(v)s 6(alue)k 6580(of)s 6851(the)s -7199(parameter)s 8213(\(leading)s 0 52(1.0.0)m 4809(User)s 5320(service)s +7199(parameter)s 8213(\(leading)s 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -3683,7 +3683,7 @@ grestore 8490(after)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s -2462(client)s 3052(speci\207cation)s 8591(1.0.0)s +2462(client)s 3052(speci\207cation)s 8611(1.0.1)s grestore grestore @@ -3985,7 +3985,7 @@ 240 fnt31 0 -52(catch\211quit)m grestore -5645(\).)s 0 52(1.0.0)m 4809(User)s 5320(service)s +5645(\).)s 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -4401,7 +4401,7 @@ 2830(speci\207ed)s 3738(when)s 4314(the)s 4662(service)s 5394(is)s 5604(about)s 6196(to)s 6435(be)s 6717(in)s 9(v)k 4(ok)k 2(ed)k 7532(\(after)s 8107(the)s 0 52(User)m 511(service)s 1243(daemon)s -2058(and)s 2462(client)s 3052(speci\207cation)s 8591(1.0.0)s +2058(and)s 2462(client)s 3052(speci\207cation)s 8611(1.0.1)s grestore grestore @@ -4622,7 +4622,7 @@ 2482(processing)s 3558(is)s 3768(as)s 4018(if)s 4235(the)s 4583(daemon)s 5398(were)s 5918(parsing)s 6675(an)s 6958(o)s 3(v)k 3(erall)k 7670(con\207guration)s 0 2506(\207le)m 361(whose)s 1029(contents)s 1877(were)s -2397(as)s 2647(follo)s 6(ws:)k 0 52(1.0.0)m 4809(User)s +2397(as)s 2647(follo)s 6(ws:)k 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -4704,7 +4704,7 @@ 0 -772(quit)m grestore 0 52(User)m 511(service)s -1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s 8591(1.0.0)s +1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s 8611(1.0.1)s grestore @@ -5002,7 +5002,7 @@ 8188(v)s 6(ariable.)k 480 887(This)m 946(grants)s 1570(no)s 1852(special)s 2560(access)s 3210(to)s 3438(that)s 3846(directory)s 4751(unless)s 5389(it)s 5571(is)s 5770(a)s 5925(subdirectory)s -7164(of)s 7424(a)s 7579(directory)s 8484(which)s 0 52(1.0.0)m +7164(of)s 7424(a)s 7579(directory)s 8484(which)s 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -5101,7 +5101,7 @@ 6106(other)s 6657(information)s 7842(may)s 8308(pass)s 480 11379(between)m 1334(the)s 1682(caller)s 2271(and)s 2675(the)s 3023(service.)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s -3052(speci\207cation)s 8591(1.0.0)s +3052(speci\207cation)s 8611(1.0.1)s grestore grestore @@ -5396,7 +5396,7 @@ 1287(daemon')s 13(s)k 2255(queues,)s 3027(and)s 3431(the)s 3779(daemon)s 4594(w)s 2(ould)k 5249(read)s 5718(the)s 6066(\207le)s 6427(later)s 6910(when)s 7486(it)s 7678(felt)s -8055(lik)s 2(e)k 8467(it.)s 0 52(1.0.0)m 4809(User)s +8055(lik)s 2(e)k 8467(it.)s 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -5661,7 +5661,7 @@ 6444(to)s 6636(con\207guration)s 7703(\207les)s 8062(speci\207ed)s 8789(by)s 0 682(the)m 279(system)s 858(administrator)s 10(.)k 240 fnt82 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s -3052(speci\207cation)s 8591(1.0.0)s +3052(speci\207cation)s 8611(1.0.1)s grestore grestore @@ -5672,7 +5672,6 @@ %%Page: 22 22 %%BeginPageSetup %%PageResources: font Times-Roman -%%+ font Times-Bold %%+ font Courier-Bold /pgsave save def 0.0500 dup scale 10 setlinewidth @@ -5699,15 +5698,14 @@ gsave 0 LoutMargSet grestore -240 fnt84 0 13842(22)m 240 fnt82 0 13254(mistak)m 2(es)k -885(with)s 1367(programs)s 2321(lik)s 2(e)k gsave -2733 13308 translate +0 13844(??)m 0 13255(mistak)m 2(es)k 885(with)s 1367(programs)s +2321(lik)s 2(e)k gsave +2733 13309 translate 0.6953 1.0000 scale -240 fnt31 -0 -52(sudo)m +240 fnt31 0 -52(sudo)m grestore -3133(.)s 0 52(1.0.0)m 4809(User)s 5320(service)s -6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s +3133(.)s + grestore grestore diff -ruN userv-1.0.0/spec.sgml userv-1.0.1/spec.sgml --- userv-1.0.0/spec.sgml Mon Mar 6 18:14:46 2000 +++ userv-1.0.1/spec.sgml Wed Jun 28 01:11:48 2000 @@ -3,7 +3,7 @@ User service daemon and client specification <author>Ian Jackson <email>ian@davenant.greenend.org.uk -<version>1.0.0</version> +<version>1.0.1</version> <abstract> This is a specification for a Unix system facility to allow one