Modify

Opened 13 years ago

Closed 13 years ago

#8563 closed defect (fixed)

IndexError: list index out of range

Reported by: godblessyou Owned by: Steffen Hoffmann
Priority: highest Component: AccountManagerPlugin
Severity: blocker Keywords: login, htpasswd, auth
Cc: Trac Release: 0.12

Description

How to Reproduce

While doing a POST operation on /admin/accounts/users, Trac issued an internal error.

(please provide additional details here)

Request parameters:

{'__FORM_TOKEN': u'fff348fb504632cf87860733',
 'add': u' Add ',
 'cat_id': u'accounts',
 'email': u'aa@aa.com',
 'name': u'\uad00\ub9ac\uc790',
 'panel_id': u'users',
 'password': u'aa',
 'password_confirm': u'aa',
 'path_info': None,
 'user': u'admin'}

User agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)

System Information

Trac 0.12.2
Babel 0.9.5
Genshi 0.6
mod_wsgi 3.3 (WSGIProcessGroup WSGIApplicationGroup %{GLOBAL})
pysqlite 2.6.0
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]
setuptools 0.6c11
SQLite 3.6.21
Subversion 1.6.15 (r1038135)
jQuery 1.4.2

Enabled Plugins

tracaccountmanager 0.3dev-r9923

Python Traceback

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\trac\web\main.py", line 511, in _dispatch_request
    dispatcher.dispatch(req)
  File "C:\Python27\lib\site-packages\trac\web\main.py", line 237, in dispatch
    resp = chosen_handler.process_request(req)
  File "C:\Python27\lib\site-packages\trac\admin\web_ui.py", line 116, in process_request
    path_info)
  File "build\bdist.win32\egg\acct_mgr\admin.py", line 132, in render_admin_panel
    return self._do_users(req)
  File "build\bdist.win32\egg\acct_mgr\admin.py", line 211, in _do_users
    _create_user(req, self.env, check_permissions=False)
  File "build\bdist.win32\egg\acct_mgr\web_ui.py", line 145, in _create_user
    mgr.set_password(user, password)
  File "build\bdist.win32\egg\acct_mgr\api.py", line 263, in set_password
    if store.set_password(user, password, old_password):
  File "build\bdist.win32\egg\acct_mgr\htfile.py", line 53, in set_password
    self.userline(user, password))
  File "build\bdist.win32\egg\acct_mgr\htfile.py", line 107, in _update_file
    if lines[0].endswith('\r') and os.linesep == '\r':
IndexError: list index out of range

Attachments (0)

Change History (5)

comment:1 Changed 13 years ago by Steffen Hoffmann

This is related to the changes in [9923]. Did you start with an empty password file? Otherwise the there should be at least one line and lines[0] shouldn't fail. Or it is related to Python2.7, since this code had not been tested with Python > 2.6 before. Clearly this needs a fix anyway.

What OS do you run Trac on? What where your last actions before facing this error? I just see a create_user attempt from the users admin page, right?

Thanks for taking your time to report this. I'd really like to fix this soonish, if we could work out what happened.

comment:2 Changed 13 years ago by Steffen Hoffmann

(In [9927]) AccountManagerPlugin: Handle empty password files without exception, refs #8563.

AccountManagerPlugin terminates each line, so there's no such thing like an empty file because at least one linebreak is always retained. But other application may not equally care for proper line endings. So I've moved the existing check for data read length up to prevent reading from a possibly empty list in case of a blank file. Checking EOL style not in first but in the last line is the other change, but certainly unrelated to the issue.

comment:3 Changed 13 years ago by Steffen Hoffmann

Status: newassigned

Would you give the last revision a try, please?

comment:4 in reply to:  1 Changed 13 years ago by godblessyou

Replying to hasienda:

This is related to the changes in [9923]. Did you start with an empty password file? Otherwise the there should be at least one line and lines[0] shouldn't fail. Or it is related to Python2.7, since this code had not been tested with Python > 2.6 before. Clearly this needs a fix anyway.

Password file was an empty. I've added new blank line on password file. Solved. Thank you :)

It needs a fix.

What OS do you run Trac on? What where your last actions before facing this error? I just see a create_user attempt from the users admin page, right?

OS is Windows XP SP3.

Thanks for taking your time to report this. I'd really like to fix this soonish, if we could work out what happened.

comment:5 in reply to:  3 Changed 13 years ago by godblessyou

Resolution: fixed
Status: assignedclosed

Replying to hasienda:

Would you give the last revision a try, please?

I've upgraded from last revision.

Thank you. Solved :D

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Steffen Hoffmann.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.