HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: tsi problem



RICK_@t-online.de (Juergen Anzer) writes:

> > Hylafax incorrectly rejects incoming fax with empty (but present) TSI
> > despite of "^.*$" rule in the etc/tsi. The problem is in the following code
> > (util/RegEx.c++):
> > 
> > [---cut--]
> > fxBool
> > RegEx::Find(const char* text, u_int length, u_int off)
> > {
> >     if (compResult == 0) {
> >         /*
> >          * These two checks are for compatibility with the old
> >          * InterViews code; yech (but the DialRules logic needs it).
> >          */
> >         if (off >= length || (off != 0 && _pattern[0] == '^'))
> >             execResult = REG_NOMATCH;
> >         else {
> >             matches[0].rm_so = off;
> >             matches[0].rm_eo = length;
> >             execResult = regexec(&c_pattern, text, c_pattern.re_nsub+1,
> >                             matches, REG_STARTEND);
> >         }
> >     }
> >     return (execResult == 0);
> > }
> > [---cut---]
> > 
> > Needless to say that Find() reports no match in case of empty string
> > because of the first if() condition ( length and ofs == 0 ). I would change
> > this to something like
> > 
> > ((off || length) && off >= length) || (off && _pattern[0] == '^')
> > 
> > if not the reference to "InterViews code" in the comment. Does anybody know
> > that is this? BTW, DialRules logic should not be broken if the above
> > changes are applied.
> 
> I have no chance to have a look into the source right now, but I think the problem 
> is more difficult.
> 
> If you apply the above changes, wouldn´t you open the door to all (null)-TSI spam 
> faxes although TSI checking is enabled?

No way, because if you apply my patch, regexec() in else{} branch will
decide if "" string is acceptable. If there is a suitable pattern like
"^.*$" it will be accepted, otherwise rejected (at least it should unless
regex library used in Hylafax is totally broken). The cause of problems is
buggy _extra_ check (besides regex matching), which seems to be mostly
redundant. What is why I asked for explanation what is "InterViews code"
mentioned in the original comments.

Hope to hear from you soon,
Dmitry





Project hosted by iFAX Solutions