List Info

Thread: Bug in smtpd.SMTPChannel.smtp_MAIL




Bug in smtpd.SMTPChannel.smtp_MAIL
user name
2007-10-20 16:00:38
smtpd.SMTPChannel contains a bug such that when connected to an SMTPServer (or any subclass thereof), issuing a MAIL command with no argument closes the socket and gives this error on the server:

error: uncaptured python exception, closing channel < smtpd.SMTPChannel connected 127.0.0.1:58587 at 0x847d8>; (<type 'exceptions.TypeError'&gt;:'NoneType' object is unsubscriptable [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/asyncore.py|read|68] [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/asyncore.py|handle_read_event|390] [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/asynchat.py|handle_read|137] [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/smtpd.py|found_terminator|158] [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/smtpd.py|smtp_MAIL|224] [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/smtpd.py|__getaddr|212])

The desired result is of course is to respond with a 501 Syntax error. The problem arises because the arg parameter passed to each smtp_* command handler function is None when there is no argument. arg is passed on to __getaddr which attempts a slice on the None object.

I think the most elegant solution would be to insert a "if not arg" check in __getaddr and return. The existing smtp_MAIL code will then issue the 501 Syntax error.


-Derek Shockey
Re: Bug in smtpd.SMTPChannel.smtp_MAIL
user name
2007-10-21 10:57:10
Could you submit a patch to the bug tracker
(bugs.python.org)?

2007/10/20, Derek Shockey <derek.shockeygmail.com>:
> smtpd.SMTPChannel contains a bug such that when
connected to an SMTPServer
> (or any subclass thereof), issuing a MAIL command with
no argument closes
> the socket and gives this error on the server:
>
> error: uncaptured python exception, closing channel
< smtpd.SMTPChannel
> connected 127.0.0.1:58587 at 0x847d8> (<type
> 'exceptions.TypeError'>:'NoneType' object is
unsubscriptable
>
[/System/Library/Frameworks/Python.framework/Versions/2.5/li
b/python2.5/asyncore.py|read|68]
>
[/System/Library/Frameworks/Python.framework/Versions/2.5/li
b/python2.5/asyncore.py|handle_read_event|390]
>
[/System/Library/Frameworks/Python.framework/Versions/2.5/li
b/python2.5/asynchat.py|handle_read|137]
>
[/System/Library/Frameworks/Python.framework/Versions/2.5/li
b/python2.5/smtpd.py|found_terminator|158]
>
[/System/Library/Frameworks/Python.framework/Versions/2.5/li
b/python2.5/smtpd.py|smtp_MAIL|224]
>
[/System/Library/Frameworks/Python.framework/Versions/2.5/li
b/python2.5/smtpd.py|__getaddr|212])
>
> The desired result is of course is to respond with a
501 Syntax error. The
> problem arises because the arg parameter passed to each
smtp_* command
> handler function is None when there is no argument. arg
is passed on to
> __getaddr which attempts a slice on the None object.
>
> I think the most elegant solution would be to insert a
"if not arg" check in
> __getaddr and return. The existing smtp_MAIL code will
then issue the 501
> Syntax error.
>
>
> -Derek Shockey
>
> _______________________________________________
> Python-Dev mailing list
> Python-Devpython.org
> ht
tp://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/pytho
n-dev/guido%40python.org
>
>


-- 
--Guido van Rossum (home page: http://www.python.org/~
guido/)
_______________________________________________
Python-Dev mailing list
Python-Devpython.org
ht
tp://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/p
ython-dev/nessto%40sharedlog.com

Re: Bug in smtpd.SMTPChannel.smtp_MAIL
user name
2007-10-22 00:26:44
I did actually submit a patch last night after I emailed the list. The issue ID is 1307.

I used the ternary operator (because I like it and because it was the shortest solution), but if this is not desirable for backwards compatibility, I could obviously rewrite it another way.

-Derek Shockey



On 10/21/07, Guido van Rossum < guidopython.org">guidopython.org> wrote:
Could you submit a patch to the bug tracker (bugs.python.org )?

2007/10/20, Derek Shockey < derek.shockeygmail.com">derek.shockeygmail.com>:
> smtpd.SMTPChannel contains a bug such that when connected to an SMTPServer
> (or any subclass thereof), issuing a MAIL command with no argument closes
&gt; the socket and gives this error on the server:
&gt;
> error: uncaptured python exception, closing channel < smtpd.SMTPChannel
>; connected 127.0.0.1:58587 at 0x847d8>; (<type
> 'exceptions.TypeError'&gt;:'NoneType' object is unsubscriptable
> [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/asyncore.py|read|68]
> [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/asyncore.py|handle_read_event|390]
> [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/asynchat.py|handle_read|137]
> [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/smtpd.py|found_terminator|158]
> [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/smtpd.py|smtp_MAIL|224]
&gt; [/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/smtpd.py|__getaddr|212])
&gt;
> The desired result is of course is to respond with a 501 Syntax error. The
> problem arises because the arg parameter passed to each smtp_* command
&gt; handler function is None when there is no argument. arg is passed on to
> __getaddr which attempts a slice on the None object.
>
> I think the most elegant solution would be to insert a "if not arg" check in
> __getaddr and return. The existing smtp_MAIL code will then issue the 501
> Syntax error.
>;
>
&gt; -Derek Shockey
&gt;
> _______________________________________________
> Python-Dev mailing list
> Python-Devpython.org">Python-Devpython.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/python-dev/guido%40python.org
>
>


--
--Guido van Rossum (home page: http://www.python.org/~guido/)

[1-3]

about | contact  Other archives ( Real Estate discussion Medical topics )