New submission from Ed Schouten:

The '_crypt' module provides a binding to the C crypt(3) function. It is used 
by the crypt.crypt() function.

Looking at the C code, there are a couple of things we can improve:

- Because crypt() only depends on primitive C types, we currently get away with 
calling it without it being declared. Ensure that we include <unistd.h>, which 
is the POSIX header file declaring this.

- The disadvantage of crypt() is that it's thread-unsafe. Systems like Linux 
and recent versions of FreeBSD nowadays provide crypt_r() as a replacement. 
This function allows you to pass in a 'crypt_data' object that will hold the 
resulting string for you. Extend the code to use this function when available.

This patch is actually needed to make this module build on CloudABI 
(https://mail.python.org/pipermail/python-dev/2016-July/145708.html). 
CloudABI's C library doesn't provide any thread-unsafe functions, meaning that 
crypt_r() is the only way you can crypt passwords.

----------
components: Extension Modules
files: crypt.diff
keywords: patch
messages: 279186
nosy: EdSchouten
priority: normal
severity: normal
status: open
title: [Patch] '_crypt' module: fix implicit declaration of crypt(), use 
crypt_r() where available
versions: Python 3.6
Added file: http://bugs.python.org/file45185/crypt.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue28503>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to