Bug 80220

Summary: The last character is stripped from password if reading it from STDIN
Product: [Retired] Red Hat Linux Reporter: Konstantin Andreev <pka>
Component: passwdAssignee: Tomas Mraz <tmraz>
Status: CLOSED CURRENTRELEASE QA Contact: Mike McLean <mikem>
Severity: low Docs Contact:
Priority: low    
Version: 8.0CC: mitr
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Fixed In Version: passwd-0.68-10 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-03-25 09:31:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Bug Depends On: 71152    
Bug Blocks:    

Description Konstantin Andreev 2002-12-22 17:43:54 UTC
From Bugzilla Helper:
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 95)

Description of problem:
The passwd.c indicates that this is by design error:
	i = read(STDIN_FILENO, newPassword,
	 sizeof(newPassword) - 1);
	newPassword[i - 1] = '\0';

I can assume this was done to strip line feed character when reading password 
from one-string files. This is not a correct behaviour. It's a user 
responsibility to supply just the data the user wants.

For compatibility reasons you may correct this error by introducing new option 
like '--not-strip'. When this option applied, passwd should not strip the last 

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Execute in bash:
echo -n boguspas | passwd --stdin someuser
2. Try to login as 'someuser'

Actual Results:  Can't login with 'boguspas', but can login with 'boguspa' 

Expected Results:  Login with 'boguspas' password.