[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-panel-devel
Subject: [Differential] [Commented On] D4376: Replace long-deprecated getpass(3) call
From: "A. Wilcox" <noreply () phabricator ! kde ! org>
Date: 2017-01-31 19:29:23
Message-ID: 20170131192914.46687.38018.7B3C166D () phabricator ! kde ! org
[Download RAW message or body]
awilcox added a comment.
> Out of interest: how did you stumble on that code?
Using the musl libc, getpass is not defined unless you enable _GNU_SOURCE:
[ 75%] Building C object kcheckpass/CMakeFiles/kcheckpass.dir/kcheckpass.c.o
cd /usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5_build/kcheckpass && /usr/bin/gcc \
-D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=600 \
-I/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5_build/kcheckpass \
-I/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass \
-I/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5_build -DQT_NO_DEBUG -DNDEBUG -O2 \
-mlong-double-64 -ggdb -mcpu=G3 -fno-omit-frame-pointer -std=iso9899:1990 -fno-common -Wall -Wextra \
-Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef \
-Wmissing-format-attribute -Wwrite-strings -Werror=implicit-function-declaration -std=gnu90 \
-fvisibility=hidden -U_REENTRANT -o CMakeFiles/kcheckpass.dir/kcheckpass.c.o -c \
/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass/kcheckpass.c \
/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass/kcheckpass.c: In function \
‘conv_legacy': /usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass/kcheckpass.c:105:10: \
error: implicit declaration of function ‘getpass' [-Werror=implicit-function-declaration] p = \
getpass(prompt ? prompt : "Password: "); ^
/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass/kcheckpass.c:105:8: \
warning: assignment makes pointer from integer without a cast [-Wint-conversion] p = getpass(prompt ? \
prompt : "Password: "); ^
cc1: some warnings being treated as errors
kcheckpass/CMakeFiles/kcheckpass.dir/build.make:62: recipe for target \
'kcheckpass/CMakeFiles/kcheckpass.dir/kcheckpass.c.o' failed make[2]: *** \
[kcheckpass/CMakeFiles/kcheckpass.dir/kcheckpass.c.o] Error 1 make[2]: Leaving directory \
'/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5_build' CMakeFiles/Makefile2:2042: \
recipe for target 'kcheckpass/CMakeFiles/kcheckpass.dir/all' failed make[1]: *** \
[kcheckpass/CMakeFiles/kcheckpass.dir/all] Error 2
> If you think there is a risk: better be pedantic in this case. On the other hand getdelim should \
return -1 in error case and then your method returns null. So in my book that's good enough error \
checking.
My concern was on the off-chance that getdelim reads a partial password but receives EOF before \n so \
it returns -1. But, looking at the standard, there is no safe way to read/write to the buffer if the \
return code is -1, so that is actually a moot point.
REPOSITORY
R133 KScreenLocker
REVISION DETAIL
https://phabricator.kde.org/D4376
EMAIL PREFERENCES
https://phabricator.kde.org/settings/panel/emailpreferences/
To: awilcox
Cc: graesslin, plasma-devel, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas
[Attachment #3 (text/html)]
<table><tr><td style="">awilcox added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; \
font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to \
bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" \
href="https://phabricator.kde.org/D4376" rel="noreferrer">View Revision</a></tr></table><br \
/><div><div><blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; \
margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>Out of interest: how did you \
stumble on that code?</p></blockquote>
<p>Using the musl libc, getpass is not defined unless you enable _GNU_SOURCE:</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" \
data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", \
"Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, \
120, 0.08);">[ 75%] Building C object kcheckpass/CMakeFiles/kcheckpass.dir/kcheckpass.c.o cd \
/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5_build/kcheckpass && /usr/bin/gcc \
-D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=600 \
-I/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5_build/kcheckpass \
-I/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass \
-I/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5_build -DQT_NO_DEBUG -DNDEBUG -O2 \
-mlong-double-64 -ggdb -mcpu=G3 -fno-omit-frame-pointer -std=iso9899:1990 -fno-common -Wall -Wextra \
-Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef \
-Wmissing-format-attribute -Wwrite-strings -Werror=implicit-function-declaration -std=gnu90 \
-fvisibility=hidden -U_REENTRANT -o CMakeFiles/kcheckpass.dir/kcheckpass.c.o -c \
/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass/kcheckpass.c
/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass/kcheckpass.c: In function \
‘conv_legacy':
/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass/kcheckpass.c:105:10: error: \
implicit declaration of function ‘getpass' [-Werror=implicit-function-declaration] p = getpass(prompt \
? prompt : "Password: "); ^
/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5/kcheckpass/kcheckpass.c:105:8: warning: \
assignment makes pointer from integer without a cast [-Wint-conversion] p = getpass(prompt ? prompt : \
"Password: "); ^
cc1: some warnings being treated as errors
kcheckpass/CMakeFiles/kcheckpass.dir/build.make:62: recipe for target \
'kcheckpass/CMakeFiles/kcheckpass.dir/kcheckpass.c.o' failed make[2]: *** \
[kcheckpass/CMakeFiles/kcheckpass.dir/kcheckpass.c.o] Error 1 make[2]: Leaving directory \
'/usr/src/kde-plasma/kscreenlocker-5.8.5/work/kscreenlocker-5.8.5_build' \
CMakeFiles/Makefile2:2042: recipe for target 'kcheckpass/CMakeFiles/kcheckpass.dir/all' failed \
make[1]: *** [kcheckpass/CMakeFiles/kcheckpass.dir/all] Error 2</pre></div>
<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px \
0; padding: 4px 12px; background-color: #f8f9fc;"><p>If you think there is a risk: better be pedantic in \
this case. On the other hand getdelim should return -1 in error case and then your method returns null. \
So in my book that's good enough error checking.</p></blockquote>
<p>My concern was on the off-chance that getdelim reads a partial password but receives EOF before \n so \
it returns -1. But, looking at the standard, there is no safe way to read/write to the buffer if the \
return code is -1, so that is actually a moot point.</p></div></div><br \
/><div><strong>REPOSITORY</strong><div><div>R133 KScreenLocker</div></div></div><br \
/><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D4376" \
rel="noreferrer">https://phabricator.kde.org/D4376</a></div></div><br /><div><strong>EMAIL \
PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" \
rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br \
/><div><strong>To: </strong>awilcox<br /><strong>Cc: </strong>graesslin, plasma-devel, lesliezhai, \
ali-mohamed, jensreuterberg, abetts, sebas<br /></div>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic