Commit dae0ce03 authored by R David Murray's avatar R David Murray

#18678: Correct names of spwd struct members.

The old names (sp_nam and sp_pwd) are kept for backward compatibility.  Since
this is a long standing bug that hasn't caused any real-world problems, I'm
not backporting it.  However, it is worth fixing because the corrected names
match the documentation, and more importantly now match the C struct, just
like the other struct members.

Patch by Vajrasky Kok.
parent d3b6e6fe
...@@ -19,9 +19,9 @@ below, see ``<shadow.h>``): ...@@ -19,9 +19,9 @@ below, see ``<shadow.h>``):
+-------+---------------+---------------------------------+ +-------+---------------+---------------------------------+
| Index | Attribute | Meaning | | Index | Attribute | Meaning |
+=======+===============+=================================+ +=======+===============+=================================+
| 0 | ``sp_nam`` | Login name | | 0 | ``sp_namp`` | Login name |
+-------+---------------+---------------------------------+ +-------+---------------+---------------------------------+
| 1 | ``sp_pwd`` | Encrypted password | | 1 | ``sp_pwdp`` | Encrypted password |
+-------+---------------+---------------------------------+ +-------+---------------+---------------------------------+
| 2 | ``sp_lstchg`` | Date of last change | | 2 | ``sp_lstchg`` | Date of last change |
+-------+---------------+---------------------------------+ +-------+---------------+---------------------------------+
...@@ -36,15 +36,15 @@ below, see ``<shadow.h>``): ...@@ -36,15 +36,15 @@ below, see ``<shadow.h>``):
+-------+---------------+---------------------------------+ +-------+---------------+---------------------------------+
| 6 | ``sp_inact`` | Number of days after password | | 6 | ``sp_inact`` | Number of days after password |
| | | expires until account is | | | | expires until account is |
| | | blocked | | | | disabled |
+-------+---------------+---------------------------------+ +-------+---------------+---------------------------------+
| 7 | ``sp_expire`` | Number of days since 1970-01-01 | | 7 | ``sp_expire`` | Number of days since 1970-01-01 |
| | | until account is disabled | | | | when account expires |
+-------+---------------+---------------------------------+ +-------+---------------+---------------------------------+
| 8 | ``sp_flag`` | Reserved | | 8 | ``sp_flag`` | Reserved |
+-------+---------------+---------------------------------+ +-------+---------------+---------------------------------+
The sp_nam and sp_pwd items are strings, all others are integers. The sp_namp and sp_pwdp items are strings, all others are integers.
:exc:`KeyError` is raised if the entry asked for cannot be found. :exc:`KeyError` is raised if the entry asked for cannot be found.
The following functions are defined: The following functions are defined:
......
...@@ -31,6 +31,10 @@ Core and Builtins ...@@ -31,6 +31,10 @@ Core and Builtins
Library Library
------- -------
- Issue #18678: Corrected spwd struct member names in spwd module:
sp_nam->sp_namp, and sp_pwd->sp_pwdp. The old names are kept as extra
structseq members, for backward compatibility.
- Issue #6157: Fixed tkinter.Text.debug(). tkinter.Text.bbox() now raises - Issue #6157: Fixed tkinter.Text.debug(). tkinter.Text.bbox() now raises
TypeError instead of TclError on wrong number of arguments. Original patch TypeError instead of TclError on wrong number of arguments. Original patch
by Guilherme Polo. by Guilherme Polo.
......
...@@ -26,22 +26,24 @@ You have to be root to be able to use this module."); ...@@ -26,22 +26,24 @@ You have to be root to be able to use this module.");
#if defined(HAVE_GETSPNAM) || defined(HAVE_GETSPENT) #if defined(HAVE_GETSPNAM) || defined(HAVE_GETSPENT)
static PyStructSequence_Field struct_spwd_type_fields[] = { static PyStructSequence_Field struct_spwd_type_fields[] = {
{"sp_nam", "login name"}, {"sp_namp", "login name"},
{"sp_pwd", "encrypted password"}, {"sp_pwdp", "encrypted password"},
{"sp_lstchg", "date of last change"}, {"sp_lstchg", "date of last change"},
{"sp_min", "min #days between changes"}, {"sp_min", "min #days between changes"},
{"sp_max", "max #days between changes"}, {"sp_max", "max #days between changes"},
{"sp_warn", "#days before pw expires to warn user about it"}, {"sp_warn", "#days before pw expires to warn user about it"},
{"sp_inact", "#days after pw expires until account is blocked"}, {"sp_inact", "#days after pw expires until account is disabled"},
{"sp_expire", "#days since 1970-01-01 until account is disabled"}, {"sp_expire", "#days since 1970-01-01 when account expires"},
{"sp_flag", "reserved"}, {"sp_flag", "reserved"},
{"sp_nam", "login name; deprecated"}, /* Backward compatibility */
{"sp_pwd", "encrypted password; deprecated"}, /* Backward compatibility */
{0} {0}
}; };
PyDoc_STRVAR(struct_spwd__doc__, PyDoc_STRVAR(struct_spwd__doc__,
"spwd.struct_spwd: Results from getsp*() routines.\n\n\ "spwd.struct_spwd: Results from getsp*() routines.\n\n\
This object may be accessed either as a 9-tuple of\n\ This object may be accessed either as a 9-tuple of\n\
(sp_nam,sp_pwd,sp_lstchg,sp_min,sp_max,sp_warn,sp_inact,sp_expire,sp_flag)\n\ (sp_namp,sp_pwdp,sp_lstchg,sp_min,sp_max,sp_warn,sp_inact,sp_expire,sp_flag)\n\
or via the object attributes as named in the above tuple."); or via the object attributes as named in the above tuple.");
static PyStructSequence_Desc struct_spwd_type_desc = { static PyStructSequence_Desc struct_spwd_type_desc = {
...@@ -86,6 +88,8 @@ static PyObject *mkspent(struct spwd *p) ...@@ -86,6 +88,8 @@ static PyObject *mkspent(struct spwd *p)
SETI(setIndex++, p->sp_inact); SETI(setIndex++, p->sp_inact);
SETI(setIndex++, p->sp_expire); SETI(setIndex++, p->sp_expire);
SETI(setIndex++, p->sp_flag); SETI(setIndex++, p->sp_flag);
SETS(setIndex++, p->sp_namp); /* Backward compatibility for sp_nam */
SETS(setIndex++, p->sp_pwdp); /* Backward compatibility for sp_pwd */
#undef SETS #undef SETS
#undef SETI #undef SETI
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment