Re: Annoying Minor Bug In Winbind 2.2.x

2003-02-06 Thread Martin Pool
On  6 Feb 2003, "Boyce, Nick" <[EMAIL PROTECTED]> wrote:
> As per my message an hour or so ago, I'm trying to get the winbind that
> comes with Debian 3.0 Samba 2.2.3a-12 configured to allow me to telnet into
> the box with authentication handed off to a real NT domain.
> 
> Anyway, even before I really get started, I find what seems to be an
> obvious, simple and annoying buggette - if I stop and restart winbind (the
> sort of thing you do a lot at this stage) then it fails to restart, with
> this message in "/var/log/samba/log.winbindd" :
> "invalid permissions on socket directory /tmp/.winbindd"
> 
> Here's the permissions :
> /etc# ls -ld /tmp/.w*
> drwxr-x---2 root root 4096 Feb  6 21:33 /tmp/.winbindd

The error is emitted from create_pipe_sock, which checks that the
permissions on the directory are exactly what winbind expects them to
be (0755).  Obviously those permissions are not correct, which would
seem to be a problem because it might prevent non-root processes from
accessing winbindd.  This looks very much like a umask problem.

I see the bug: create_pipe_sock tries to temporarily set its umask to
0 so as to give the right permissions, but it only does this after
creating the directory.  So if you start winbindd with a umask
stronger than 022, it will fail in this way.

The bug apparently came in Andrew Bartlett's merge in 1.45; the
provenance of it I don't know.  (TNG?)  This patch ought to be applied
to 2.2, HEAD, 3.0, and APPL_HEAD.

Tim, how's this patch?



Index: util_sock.c
===
RCS file: /data/cvs/samba/source/lib/util_sock.c,v
retrieving revision 1.75
diff -u -u -p -r1.75 util_sock.c
--- util_sock.c 9 Jan 2003 06:58:07 -   1.75
+++ util_sock.c 7 Feb 2003 01:21:10 -
@@ -885,13 +885,18 @@ char *get_socket_addr(int fd)
 }
 
 
-/***
- Create protected unix domain socket.
-
- some unixen cannot set permissions on a ux-dom-sock, so we
- have to make sure that the directory contains the protection
- permissions, instead.
- **/
+/**
+ *  Create protected unix domain socket.
+ * 
+ * Some unixen cannot set permissions on a ux-dom-sock, so we have to
+ * make sure that the directory contains the protection permissions,
+ * instead.
+ *
+ * It must be possible to access the socket from unprivileged
+ * programs, even if the daemon is started with a restrictive umask.
+ * Therefore is is temporarily removed while creating the directory
+ * and socket.
+ **/
 int create_pipe_sock(const char *socket_dir,
 const char *socket_name,
 mode_t dir_perms)
@@ -903,56 +908,46 @@ int create_pipe_sock(const char *socket_
 mode_t old_umask;
 pstring path;
 
+old_umask = umask(0);
+
 /* Create the socket directory or reuse the existing one */
 
 if (lstat(socket_dir, &st) == -1) {
-
 if (errno == ENOENT) {
-
-/* Create directory */
-
 if (mkdir(socket_dir, dir_perms) == -1) {
 DEBUG(0, ("error creating socket directory "
   "%s: %s\n", socket_dir, 
   strerror(errno)));
-return -1;
+   goto out_umask;
 }
-
 } else {
-
 DEBUG(0, ("lstat failed on socket directory %s: %s\n",
   socket_dir, strerror(errno)));
-return -1;
+   goto out_umask;
 }
-
 } else {
-
 /* Check ownership and permission on existing directory */
-
 if (!S_ISDIR(st.st_mode)) {
 DEBUG(0, ("socket directory %s isn't a directory\n",
   socket_dir));
-return -1;
+   goto out_umask;
 }
 
 if ((st.st_uid != sec_initial_uid()) || 
 ((st.st_mode & 0777) != dir_perms)) {
 DEBUG(0, ("invalid permissions on socket directory "
   "%s\n", socket_dir));
-return -1;
+   goto out_umask;
 }
 }
 
 /* Create the socket file */
 
-old_umask = umask(0);
-
 sock = socket(AF_UNIX, SOCK_STREAM, 0);
 
 if (sock == -1) {
 perror("socket");
-   umask(old_umask);
-return

Re: Annoying Minor Bug In Winbind 2.2.x

2003-02-06 Thread Tim Potter
On Fri, Feb 07, 2003 at 12:23:30PM +1100, Martin Pool wrote:

> The bug apparently came in Andrew Bartlett's merge in 1.45; the
> provenance of it I don't know.  (TNG?)  This patch ought to be applied
> to 2.2, HEAD, 3.0, and APPL_HEAD.
> 
> Tim, how's this patch?

How about this - I've collapsed the two error exits into one.


Tim.

Index: lib/util_sock.c
===
RCS file: /data/cvs/samba/source/lib/util_sock.c,v
retrieving revision 1.75
diff -u -r1.75 util_sock.c
--- lib/util_sock.c 9 Jan 2003 06:58:07 -   1.75
+++ lib/util_sock.c 7 Feb 2003 04:51:10 -
@@ -885,13 +885,18 @@
 }
 
 
-/***
- Create protected unix domain socket.
-
- some unixen cannot set permissions on a ux-dom-sock, so we
- have to make sure that the directory contains the protection
- permissions, instead.
- **/
+/**
+ *  Create protected unix domain socket.
+ * 
+ * Some unixen cannot set permissions on a ux-dom-sock, so we have to
+ * make sure that the directory contains the protection permissions,
+ * instead.
+ *
+ * It must be possible to access the socket from unprivileged
+ * programs, even if the daemon is started with a restrictive umask.
+ * Therefore is is temporarily removed while creating the directory
+ * and socket.
+ **/
 int create_pipe_sock(const char *socket_dir,
 const char *socket_name,
 mode_t dir_perms)
@@ -899,60 +904,50 @@
 #ifdef HAVE_UNIXSOCKET
 struct sockaddr_un sunaddr;
 struct stat st;
-int sock;
+int sock = -1;
 mode_t old_umask;
 pstring path;
 
+old_umask = umask(0);
+
 /* Create the socket directory or reuse the existing one */
 
 if (lstat(socket_dir, &st) == -1) {
-
 if (errno == ENOENT) {
-
-/* Create directory */
-
 if (mkdir(socket_dir, dir_perms) == -1) {
 DEBUG(0, ("error creating socket directory "
   "%s: %s\n", socket_dir, 
   strerror(errno)));
-return -1;
+   goto error;
 }
-
 } else {
-
 DEBUG(0, ("lstat failed on socket directory %s: %s\n",
   socket_dir, strerror(errno)));
-return -1;
+   goto error;
 }
-
 } else {
-
 /* Check ownership and permission on existing directory */
-
 if (!S_ISDIR(st.st_mode)) {
 DEBUG(0, ("socket directory %s isn't a directory\n",
   socket_dir));
-return -1;
+   goto error;
 }
 
 if ((st.st_uid != sec_initial_uid()) || 
 ((st.st_mode & 0777) != dir_perms)) {
 DEBUG(0, ("invalid permissions on socket directory "
   "%s\n", socket_dir));
-return -1;
+   goto error;
 }
 }
 
 /* Create the socket file */
 
-old_umask = umask(0);
-
 sock = socket(AF_UNIX, SOCK_STREAM, 0);
 
 if (sock == -1) {
 perror("socket");
-   umask(old_umask);
-return -1;
+   goto error;
 }
 
 snprintf(path, sizeof(path), "%s/%s", socket_dir, socket_name);
@@ -966,25 +961,26 @@
 DEBUG(0, ("bind failed on pipe socket %s: %s\n",
   path,
   strerror(errno)));
-close(sock);
-   umask(old_umask);
-return -1;
+   goto error;
 }
 
 if (listen(sock, 5) == -1) {
 DEBUG(0, ("listen failed on pipe socket %s: %s\n",
   path,
   strerror(errno)));
-close(sock);
-   umask(old_umask);
-return -1;
+   goto error;
 }
 
 umask(old_umask);
-
-/* Success! */
-
-return sock;
+return sock;   /* success */
+   
+error:
+   if (sock != -1)
+   close(sock);
+
+   umask(old_umask);
+   return -1;
+   
 #else
 DEBUG(0, ("create_pipe_sock: No Unix sockets on this system\n"));
 return -1;



RE: Annoying Minor Bug In Winbind 2.2.x

2003-02-07 Thread Boyce, Nick
On 7 Feb 2003, Martin Pool wrote:
>
> On  6 Feb 2003, "Boyce, Nick" <[EMAIL PROTECTED]> wrote:
>> 
>>  I find what seems to be an
>> obvious, simple and annoying buggette - if I stop and restart winbind
(the
>> sort of thing you do a lot at this stage) then it fails to restart, with
>> this message in "/var/log/samba/log.winbindd" :
>> "invalid permissions on socket directory /tmp/.winbindd"
>> 
>> Here's the permissions :
>> /etc# ls -ld /tmp/.w*
>> drwxr-x---2 root root 4096 Feb  6 21:33
/tmp/.winbindd
> 
> The error is emitted from create_pipe_sock, which checks that the
> permissions on the directory are exactly what winbind expects them to
> be (0755).  Obviously those permissions are not correct, which would
> seem to be a problem because it might prevent non-root processes from
> accessing winbindd.  This looks very much like a umask problem.

Thanks - that was it.  I now have a script /usr/local/bin/winbind, which
does
   umask 000
   /etc/init.d/winbind $1
   umask 027
and everything is working ok now - I can stop & restart winbind to my
heart's content without any problem (well no socket directory permissions
problems anyway ;-)

[ I'm afraid I always run with umask=027 ... it's a hangover from my
mainframe days ... I can't get away from the idea that you should grant only
the access that is needed ... "all files world-readable by default ?" ...
"Just Say No" ]

Thanks a lot.

Nick Boyce
EDS Southwest Solution Centre, Bristol, UK



Re: Annoying Minor Bug In Winbind 2.2.x

2003-02-07 Thread Martin Pool
On  7 Feb 2003, "Boyce, Nick" <[EMAIL PROTECTED]> wrote:

> Thanks - that was it.  I now have a script /usr/local/bin/winbind, which
> does
>umask 000
>/etc/init.d/winbind $1
>umask 027
> and everything is working ok now - I can stop & restart winbind to my
> heart's content without any problem (well no socket directory permissions
> problems anyway ;-)

You would be better off -- and you would be helping us too -- if you
would apply the patch and let us know if it works.  (I'm pretty sure
it will, but it's always worth testing.)  That way, rather than a
temporary workaround, there will be a proper fix for future releases.

Thanks,

> [ I'm afraid I always run with umask=027 ... it's a hangover from my
> mainframe days ... I can't get away from the idea that you should grant only
> the access that is needed ... "all files world-readable by default ?" ...
> "Just Say No" ]

That's fine, winbindd ought to work with that.

-- 
Martin



RE: Annoying Minor Bug In Winbind 2.2.x

2003-02-07 Thread Boyce, Nick
On 7 Feb 2003, Martin Pool wrote:
> 
> On  7 Feb 2003, "Boyce, Nick" <[EMAIL PROTECTED]> wrote:
>> 
>> Thanks - that was it.  I now have a script /usr/local/bin/winbind, which
>> does
>>umask 000
>>/etc/init.d/winbind $1
>>umask 027
[...]
> You would be better off -- and you would be helping us too -- if you
> would apply the patch and let us know if it works.  (I'm pretty sure
> it will, but it's always worth testing.)  

OK - I've been trying to find time to do this today but have run out (it's
20:30 ... I want to go hme .. :) ... sorry.
I'll do it on Monday next week and let you know what happens.

(The Debian machine concerned was using the Debian Samba binaries, and I'd
been hoping not to have to get involved in compiling -from-source ...
advantages of sticking with distro components, package management system ==>
easier upgrades, standard desktop rollout, mumble, etc. etc.)

Cheers

Nick Boyce
EDS Southwest Solution Centre, Bristol, UK






RE: Annoying Minor Bug In Winbind 2.2.x

2003-02-17 Thread Boyce, Nick
On 7 Feb 2003, Martin Poole wrote:

> On  7 Feb 2003, "Boyce, Nick" <[EMAIL PROTECTED]> wrote:
> 
>> Thanks - that was it.  I now have a script /usr/local/bin/winbind, which
>> does
>>   umask 000
>>   /etc/init.d/winbind $1
> 
> You would be better off -- and you would be helping us too -- if you
> would apply the patch and let us know if it works

OK - I've been trying to apply the patch that Tim posted (to supersede
Martin's first cut) to the Samba 2.2.7a source file for util_sock.c, but get
errors applying the patch no matter what I do.  I guess the posted patch was
against CVS, so could someone please repost the patch for the 2.2.7a-rel
version of the file ?

Here's what I get if I apply the posted patch :

   MYBOX:/usr/local/src/samba-2.2.7a/source/lib# patch util_sock.c
patch-util_sock.txt.orig
   patching file util_sock.c
   Hunk #1 succeeded at 1018 with fuzz 2 (offset 133 lines).
   Hunk #2 FAILED at 1037.
   Hunk #3 FAILED at 1094.
   2 out of 3 hunks FAILED -- saving rejects to file util_sock.c.rej

After deleting the line containing "#ifdef HAVE_UNIXSOCKET" (because I
noticed it doesn't appear in my 2.2.7a version of util_sock.c), I get a
little further :

   MYBOX:/usr/local/src/samba-2.2.7a/source/lib# patch util_sock.c
patch-util_sock.txt
   patching file util_sock.c
   Hunk #1 succeeded at 1018 with fuzz 2 (offset 133 lines).
   patch:  malformed patch at line 102: @@ -966,25 +961,26 @@

But now I'm completely stumped, and don't really know what I'm doing (...) -
I have no idea what "patch" is objecting to (it's not very helpful, is it ?
-  even if you run it with --verbose it doesn't get any better .. sigh).

I've attached the patch from Tim that I'm trying to apply, to avoid any
confusion.

Cheers

Nick Boyce
EDS Southwest Solution Centre, Bristol, UK


Index: lib/util_sock.c
===
RCS file: /data/cvs/samba/source/lib/util_sock.c,v
retrieving revision 1.75
diff -u -r1.75 util_sock.c
--- lib/util_sock.c 9 Jan 2003 06:58:07 -   1.75
+++ lib/util_sock.c 7 Feb 2003 04:51:10 -
@@ -885,13 +885,18 @@
 }


-/***
- Create protected unix domain socket.
-
- some unixen cannot set permissions on a ux-dom-sock, so we
- have to make sure that the directory contains the protection
- permissions, instead.
- **/
+/**
+ *  Create protected unix domain socket.
+ *
+ * Some unixen cannot set permissions on a ux-dom-sock, so we have to
+ * make sure that the directory contains the protection permissions,
+ * instead.
+ *
+ * It must be possible to access the socket from unprivileged
+ * programs, even if the daemon is started with a restrictive umask.
+ * Therefore is is temporarily removed while creating the directory
+ * and socket.
+ **/
 int create_pipe_sock(const char *socket_dir,
 const char *socket_name,
 mode_t dir_perms)
@@ -899,60 +904,50 @@
 #ifdef HAVE_UNIXSOCKET
 struct sockaddr_un sunaddr;
 struct stat st;
-int sock;
+int sock = -1;
 mode_t old_umask;
 pstring path;

+old_umask = umask(0);
+
 /* Create the socket directory or reuse the existing one */

 if (lstat(socket_dir, &st) == -1) {
-
 if (errno == ENOENT) {
-
-/* Create directory */
-
 if (mkdir(socket_dir, dir_perms) == -1) {
 DEBUG(0, ("error creating socket directory"
   "%s: %s\n", socket_dir,
   strerror(errno)));
-return -1;
+   goto error;
 }
-
 } else {
-
 DEBUG(0, ("lstat failed on socket directory %s: %s\n",
   socket_dir, strerror(errno)));
-return -1;
+   goto error;
 }
-
 } else {
-
 /* Check ownership and permission on existing directory */
-
 if (!S_ISDIR(st.st_mode)) {
 DEBUG(0, ("socket directory %s isn't a directory\n",
   socket_dir));
-return -1;
+   goto error;
 }

 if ((st.st_uid != sec_initial_uid()) ||
 ((st.st_mode & 0777) != dir_perms)) {
 DEBUG(0, ("invalid permissions on socket directory"
   "%s\n", socket_dir));
-return -1;
+   goto error;
 }
 }

 /* Create the socket file */

-old_umask = umask(0);
-
 sock = socket(AF_UNIX, SOCK_STREAM, 0);

 if (sock == -1) {
 

Re: Annoying Minor Bug In Winbind 2.2.x

2003-02-17 Thread 'Martin Pool'
On 17 Feb 2003, "Boyce, Nick" <[EMAIL PROTECTED]> wrote:
> OK - I've been trying to apply the patch that Tim posted (to supersede
> Martin's first cut) to the Samba 2.2.7a source file for util_sock.c, but get
> errors applying the patch no matter what I do.

Thanks for trying that.

> I guess the posted patch was against CVS, so could someone please
> repost the patch for the 2.2.7a-rel version of the file ?

I'll do that.

-- 
Martin 

If it's worth doing, it's worth doing for money.



Re: Annoying Minor Bug In Winbind 2.2.x

2003-02-17 Thread 'Martin Pool'
On 17 Feb 2003, "Boyce, Nick" <[EMAIL PROTECTED]> wrote:
> Here's what I get if I apply the posted patch :

As I said I'll send you an update just for 2.2.  But in general, in
case you're interested, here are some tips on applying mismatched
patches:
 
>MYBOX:/usr/local/src/samba-2.2.7a/source/lib# patch util_sock.c
> patch-util_sock.txt.orig
>patching file util_sock.c
>Hunk #1 succeeded at 1018 with fuzz 2 (offset 133 lines).
>Hunk #2 FAILED at 1037.
>Hunk #3 FAILED at 1094.
>2 out of 3 hunks FAILED -- saving rejects to file util_sock.c.rej

In general the best thing to do now is leave the main diff alone, and
only work on the rejected parts in the .rej file.  Basically you need
to work out why patch thinks the 2.2 source file doesn't look like the
"before" version of the rejected patch.

> After deleting the line containing "#ifdef HAVE_UNIXSOCKET" (because I
> noticed it doesn't appear in my 2.2.7a version of util_sock.c), I get a
> little further :
>MYBOX:/usr/local/src/samba-2.2.7a/source/lib# patch util_sock.c
> patch-util_sock.txt
>patching file util_sock.c
>Hunk #1 succeeded at 1018 with fuzz 2 (offset 133 lines).
>patch:  malformed patch at line 102: @@ -966,25 +961,26 @@

Do you mean you deleted that line from the patch?  That's probably
what is causing the "malformed patch" error: the line numbers in the
patch no longer add up.  

However, if you install the "patchutils" package, then you can run
"recountdiff" to fix the lines up after you edit a diff, and it should
then apply.  patchutils is very very cool.

-- 
Martin 



Re: Annoying Minor Bug In Winbind 2.2.x

2003-02-17 Thread 'Martin Pool'
Oh, Jeremy already committed my patch to SAMBA_2_2 CVS.  Here's the
patch.




Index: util_sock.c
===
RCS file: /data/cvs/samba/source/lib/util_sock.c,v
retrieving revision 1.16.4.36
retrieving revision 1.16.4.37
diff -u -u -p -r1.16.4.36 -r1.16.4.37
--- util_sock.c 26 Aug 2002 20:07:13 -  1.16.4.36
+++ util_sock.c 7 Feb 2003 22:04:37 -   1.16.4.37
@@ -1021,102 +1021,97 @@ char *get_socket_addr(int fd)
 /***
  Create protected unix domain socket.
 
- some unixen cannot set permissions on a ux-dom-sock, so we
+ Some unixes cannot set permissions on a ux-dom-sock, so we
  have to make sure that the directory contains the protection
- permissions, instead.
+ permissions instead.
  **/
+
 int create_pipe_sock(const char *socket_dir,
-   const char *socket_name,
-   mode_t dir_perms)
+const char *socket_name,
+mode_t dir_perms)
 {
-struct sockaddr_un sunaddr;
-struct stat st;
-int sock;
-mode_t old_umask;
-pstring path;
-
-/* Create the socket directory or reuse the existing one */
-
-if (lstat(socket_dir, &st) == -1) {
-
-if (errno == ENOENT) {
-
-/* Create directory */
-
-if (mkdir(socket_dir, dir_perms) == -1) {
-DEBUG(0, ("error creating socket directory "
-  "%s: %s\n", socket_dir, 
-  strerror(errno)));
-return -1;
-}
-
-} else {
-
-DEBUG(0, ("lstat failed on socket directory %s: %s\n",
-  socket_dir, strerror(errno)));
-return -1;
-}
-
-} else {
-
-/* Check ownership and permission on existing directory */
-
-if (!S_ISDIR(st.st_mode)) {
-DEBUG(0, ("socket directory %s isn't a directory\n",
-  socket_dir));
-return -1;
-}
-
-if ((st.st_uid != sec_initial_uid()) || 
-((st.st_mode & 0777) != dir_perms)) {
-DEBUG(0, ("invalid permissions on socket directory "
-  "%s\n", socket_dir));
-return -1;
-}
-}
-
-/* Create the socket file */
-
-old_umask = umask(0);
-
-sock = socket(AF_UNIX, SOCK_STREAM, 0);
-
-if (sock == -1) {
-perror("socket");
-   umask(old_umask);
-return -1;
-}
-
-snprintf(path, sizeof(path), "%s/%s", socket_dir, socket_name);
-
-unlink(path);
-memset(&sunaddr, 0, sizeof(sunaddr));
-sunaddr.sun_family = AF_UNIX;
-safe_strcpy(sunaddr.sun_path, path, sizeof(sunaddr.sun_path)-1);
-
-if (bind(sock, (struct sockaddr *)&sunaddr, sizeof(sunaddr)) == -1) {
-DEBUG(0, ("bind failed on pipe socket %s: %s\n",
-  path,
-  strerror(errno)));
-close(sock);
-   umask(old_umask);
-return -1;
-}
-
-if (listen(sock, 5) == -1) {
-DEBUG(0, ("listen failed on pipe socket %s: %s\n",
-  path,
-  strerror(errno)));
-close(sock);
-   umask(old_umask);
-return -1;
-}
-
-umask(old_umask);
-
-/* Success! */
-
-return sock;
+#ifdef HAVE_UNIXSOCKET
+   struct sockaddr_un sunaddr;
+   struct stat st;
+   int sock;
+   mode_t old_umask;
+   pstring path;
+
+   old_umask = umask(0);
+
+   /* Create the socket directory or reuse the existing one */
+
+   if (lstat(socket_dir, &st) == -1) {
+   if (errno == ENOENT) {
+   /* Create directory */
+   if (mkdir(socket_dir, dir_perms) == -1) {
+   DEBUG(0, ("error creating socket directory "
+   "%s: %s\n", socket_dir, 
+   strerror(errno)));
+   goto out_umask;
+   }
+   } else {
+

RE: Annoying Minor Bug In Winbind 2.2.x

2003-02-18 Thread Boyce, Nick
On 18 Feb 2003, Martin Pool wrote :

> Jeremy already committed my patch to SAMBA_2_2 CVS.  
> Here's the patch.
> 
> Index: util_sock.c
> ===
> RCS file: /data/cvs/samba/source/lib/util_sock.c,v
> retrieving revision 1.16.4.36
> retrieving revision 1.16.4.37
> diff -u -u -p -r1.16.4.36 -r1.16.4.37
[snip]

I'm sorry - I'm probably doing something dumb, but I still get failures even
with this patch - first, if I save the patch as it appeared in my Outlook
window, then line 25 consists of a single left brace char, which results in
:

   MYBOX:/usr/local/src/samba-2.2.7a/source/lib# patch util_sock.c
patch-util_sock-20030218
   patching file util_sock.c
   patch:  malformed patch at line 25: {

So assuming line-wrap did something Bad to that line, I edited the patch
file to stick that line onto the end of line 24, resulting in :

   MYBOX:/usr/local/src/samba-2.2.7a/source/lib# patch util_sock.c
patch-util_sock-20030218
   patching file util_sock.c
   Hunk #1 FAILED at 1021.
   1 out of 1 hunk FAILED -- saving rejects to file util_sock.c.rej

and I don't know enough about what I'm looking at to figure it out.

> In general the best thing to do now is leave the main diff alone, and
> only work on the rejected parts in the .rej file.  Basically you need
> to work out why patch thinks the 2.2 source file doesn't look like the
> "before" version of the rejected patch.

OK - hang on ... right, it seems the real original 2.2.7a util_sock.c really
*does* have the "{" on line 25 all by itself - but since that gave me
"malformed patch", I assume the patch needs a "rediff" ???  Here goes :

   MYBOX:/usr/local/src/samba-2.2.7a/source/lib# rediff
patch-util_sock-20030218.orig patch-util_sock-20030218
   Index: util_sock.c
   ===
   RCS file: /data/cvs/samba/source/lib/util_sock.c,v
   retrieving revision 1.16.4.36
   retrieving revision 1.16.4.37
   diff -u -u -p -r1.16.4.36 -r1.16.4.37
   rediff: Not supported: -{

OK - I give up for now ... hlp :(
[sorry .. for all this trouble over such a minor thing]

Nick Boyce
EDS Southwest Solution Centre, Bristol, UK



-Original Message-
From: 'Martin Pool' [mailto:[EMAIL PROTECTED]]
Sent: 17 February 2003 23:08
To: Boyce, Nick
Cc: [EMAIL PROTECTED]
Subject: Re: Annoying Minor Bug In Winbind 2.2.x


Oh, Jeremy already committed my patch to SAMBA_2_2 CVS.  Here's the
patch.




Index: util_sock.c
===
RCS file: /data/cvs/samba/source/lib/util_sock.c,v
retrieving revision 1.16.4.36
retrieving revision 1.16.4.37
diff -u -u -p -r1.16.4.36 -r1.16.4.37
--- util_sock.c 26 Aug 2002 20:07:13 -  1.16.4.36
+++ util_sock.c 7 Feb 2003 22:04:37 -   1.16.4.37
@@ -1021,102 +1021,97 @@ char *get_socket_addr(int fd)
 /***
  Create protected unix domain socket.
 
- some unixen cannot set permissions on a ux-dom-sock, so we
+ Some unixes cannot set permissions on a ux-dom-sock, so we
  have to make sure that the directory contains the protection
- permissions, instead.
+ permissions instead.
  **/
+
 int create_pipe_sock(const char *socket_dir,
-   const char *socket_name,
-   mode_t dir_perms)
+const char *socket_name,
+mode_t dir_perms)
 {
-struct sockaddr_un sunaddr;
-struct stat st;
-int sock;
-mode_t old_umask;
-pstring path;
-
-/* Create the socket directory or reuse the existing one */
-
-if (lstat(socket_dir, &st) == -1) {
-
-if (errno == ENOENT) {
-
-/* Create directory */
-
-if (mkdir(socket_dir, dir_perms) == -1) {
-DEBUG(0, ("error creating socket directory
"
-  "%s: %s\n", socket_dir, 
-  strerror(errno)));
-return -1;
-}
-
-} else {
-
-DEBUG(0, ("lstat failed on socket directory %s:
%s\n",
-  socket_dir, strerror(errno)));
-return -1;
-}
-
-} else {
-
-/* Check ownership and permission on existing directory */
-
-if (!S_ISDIR(st.st_mode)) {
-  

RE: Annoying Minor Bug In Winbind 2.2.x

2003-02-18 Thread Esh, Andrew
It's probably a line count thing. The head of the patch contains a certain
range of lines that the patch should apply to. If you truncated the patch at
the bottom, the header could be telling patch it needs to add, for example,
30 lines, while the patch text only contains 28.

Go back to the email and copy/paste lines from the email into your patch
file at the bottom, down to but not including the two dashes above Martin's
signature, and see if that helps. That line of stars is part of the patch,
and maybe a few blank lines below it. Make the part of the patch at the
bottom, below the lines with the plus signs, match what is already in the
target file.

> -Original Message-
> From: Boyce, Nick [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, February 18, 2003 2:58 PM
> To: [EMAIL PROTECTED]
> Cc: 'Martin Pool'
> Subject: RE: Annoying Minor Bug In Winbind 2.2.x
> 
> 
> On 18 Feb 2003, Martin Pool wrote :
> 
> > Jeremy already committed my patch to SAMBA_2_2 CVS.  
> > Here's the patch.
> > 
> > Index: util_sock.c
> > ===
> > RCS file: /data/cvs/samba/source/lib/util_sock.c,v
> > retrieving revision 1.16.4.36
> > retrieving revision 1.16.4.37
> > diff -u -u -p -r1.16.4.36 -r1.16.4.37
> [snip]
> 
> I'm sorry - I'm probably doing something dumb, but I still 
> get failures even
> with this patch - first, if I save the patch as it appeared 
> in my Outlook
> window, then line 25 consists of a single left brace char, 
> which results in
> :
> 
>MYBOX:/usr/local/src/samba-2.2.7a/source/lib# patch util_sock.c
> patch-util_sock-20030218
>patching file util_sock.c
>patch:  malformed patch at line 25: {
> 
> So assuming line-wrap did something Bad to that line, I 
> edited the patch
> file to stick that line onto the end of line 24, resulting in :
> 
>MYBOX:/usr/local/src/samba-2.2.7a/source/lib# patch util_sock.c
> patch-util_sock-20030218
>patching file util_sock.c
>Hunk #1 FAILED at 1021.
>1 out of 1 hunk FAILED -- saving rejects to file util_sock.c.rej
> 
> and I don't know enough about what I'm looking at to figure it out.
> 
> > In general the best thing to do now is leave the main diff 
> alone, and
> > only work on the rejected parts in the .rej file.  
> Basically you need
> > to work out why patch thinks the 2.2 source file doesn't 
> look like the
> > "before" version of the rejected patch.
> 
> OK - hang on ... right, it seems the real original 2.2.7a 
> util_sock.c really
> *does* have the "{" on line 25 all by itself - but since that gave me
> "malformed patch", I assume the patch needs a "rediff" ???  
> Here goes :
> 
>MYBOX:/usr/local/src/samba-2.2.7a/source/lib# rediff
> patch-util_sock-20030218.orig patch-util_sock-20030218
>Index: util_sock.c
>===
>RCS file: /data/cvs/samba/source/lib/util_sock.c,v
>retrieving revision 1.16.4.36
>retrieving revision 1.16.4.37
>diff -u -u -p -r1.16.4.36 -r1.16.4.37
>rediff: Not supported: -{
> 
> OK - I give up for now ... hlp :(
> [sorry .. for all this trouble over such a minor thing]
> 
> Nick Boyce
> EDS Southwest Solution Centre, Bristol, UK
> 
> 
> 
> -Original Message-
> From: 'Martin Pool' [mailto:[EMAIL PROTECTED]]
> Sent: 17 February 2003 23:08
> To: Boyce, Nick
> Cc: [EMAIL PROTECTED]
> Subject: Re: Annoying Minor Bug In Winbind 2.2.x
> 
> 
> Oh, Jeremy already committed my patch to SAMBA_2_2 CVS.  Here's the
> patch.
> 
> 
> 
> 
> Index: util_sock.c
> ===
> RCS file: /data/cvs/samba/source/lib/util_sock.c,v
> retrieving revision 1.16.4.36
> retrieving revision 1.16.4.37
> diff -u -u -p -r1.16.4.36 -r1.16.4.37
> --- util_sock.c   26 Aug 2002 20:07:13 -  1.16.4.36
> +++ util_sock.c   7 Feb 2003 22:04:37 -   1.16.4.37
> @@ -1021,102 +1021,97 @@ char *get_socket_addr(int fd)
>  /***
>   Create protected unix domain socket.
>  
> - some unixen cannot set permissions on a ux-dom-sock, so we
> + Some unixes cannot set permissions on a ux-dom-sock, so we
>   have to make sure that the directory contains the protection
> - permissions, instead.
> + permissions instead.
>   **/
> +
>  int create_pipe_sock(const char *socket_dir,
> -  

Re: Annoying Minor Bug In Winbind 2.2.x

2003-02-18 Thread 'Martin Pool'
On 18 Feb 2003, "Boyce, Nick" <[EMAIL PROTECTED]> wrote:

> I'm sorry - I'm probably doing something dumb, but I still get failures even
> with this patch - first, if I save the patch as it appeared in my Outlook
> window, then line 25 consists of a single left brace char, which results in
> :

You can also download the patch from here

http://pserver.samba.org/cgi-bin/cvsweb/samba/source/lib/util_sock.c.diff?r1=1.16.4.36&r2=1.16.4.37

In general you can try using "view source" to get a version that's not
folded/spindled/mutilated by Outlook, or the very cool "unwrapdiff" to
try to fix the line wrapping.

Thanks for persisting.

-- 
Martin 



RE: Annoying Minor Bug In Winbind 2.2.x

2003-02-19 Thread Boyce, Nick
On 19 Feb 2003, Andrew Esh wrote:

> It's probably a line count thing. The head of the patch contains a certain
> range of lines that the patch should apply to. If you truncated the patch
at
> the bottom, the header could be telling patch it needs to add, for
example,
> 30 lines, while the patch text only contains 28 ... That line of stars
is 
> part of the patch, and maybe a few blank lines below it. 

Thanks - that was it - the two blank lines below the line of stars were part
of the patch (a fact I was able to confirm by comparing with the CVS web ref
Martin posted) but I'd missed them out.

Patch applied - now recompiling Samba ... done.  And now it works fine - I
can restart winbindd to my heart's content and "/tmp/.winbindd" gets created
with the right permissions and everybody's happy  :)

Thanks for bearing with me.

Nick Boyce
EDS Southwest Solution Centre, Bristol, UK