[comp.bugs.4bsd] Mangled header problem with sendmail.5.61.IDA

rickert@mp.cs.niu.edu (Neil Rickert) (04/25/91)

In article <1991Apr24.205539.11879@mp.cs.niu.edu> rickert@mp.cs.niu.edu (Neil Rickert) writes:
>In article <9104241220.AA01017@gruffle.comlab.prg.ox.ac.uk> Malcolm.Harper@prg.oxford.ac.uk writes:
>>but lines of the form
>>        From: Malcolm.Harper@uk.ac.oxford.prg (Malcolm Harper \(Postmaster\))
>>get mangled into
>>        From: Malcolm.Harper@prg(.oxford.ac.uk (Malcolm Harper \(Postmaster\))
>>and then fail with "Unbalanced '('".

>  This seems to be a combination of a bug in the sendmail sources from
>Berkeley, and a possible bug in the 'sendmail.cf' you are using.
>
>  I am compiling a possible fix to the source bug right now.  I will post
>if it works out.

 Here is the promised patch.

 It compiles, and it passes my preliminary tests.  I am now running the patched
version as my system 'sendmail'.  If any problems turn up I will post a notice.

 As you can see, the patch just changes an 'else if'  into an 'if'

 What was happening was that a backslash quoted character was handled first,
by setting a quote bit.  Because of the 'else' it was never looked at again
and so missed the processing to handle the fact that it was in a parenthesized
comment.  Removing the 'else' should eliminate the problem.

*** /tmp/RCSAAA029384	Wed Apr 24 16:18:02 1991
--- parseaddr.c	Wed Apr 24 16:04:46 1991
***************
*** 389,395 ****
  				bslashmode = TRUE;
  				c = NOCHAR;
  			}
! 			else if (state == QST)
  			{
  				/* do nothing, just avoid next clauses */
  			}
--- 389,395 ----
  				bslashmode = TRUE;
  				c = NOCHAR;
  			}
! 			/* else */ if (state == QST)
  			{
  				/* do nothing, just avoid next clauses */
  			}

-- 
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
  Neil W. Rickert, Computer Science               <rickert@cs.niu.edu>
  Northern Illinois Univ.
  DeKalb, IL 60115                                   +1-815-753-6940