Avoid a crash if getpwuid does not work, when querying the user's full name.
This commit is contained in:
parent
88c85ae609
commit
d62d81ee1c
3 changed files with 32 additions and 1 deletions
|
@ -22,6 +22,8 @@ git-annex (6.20160528) UNRELEASED; urgency=medium
|
||||||
drop content from disk before writing location log.
|
drop content from disk before writing location log.
|
||||||
* Fix bad automatic merge conflict resolution between an annexed file
|
* Fix bad automatic merge conflict resolution between an annexed file
|
||||||
and a directory with the same name when in an adjusted branch.
|
and a directory with the same name when in an adjusted branch.
|
||||||
|
* Avoid a crash if getpwuid does not work, when querying the user's full
|
||||||
|
name.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Fri, 27 May 2016 13:12:48 -0400
|
-- Joey Hess <id@joeyh.name> Fri, 27 May 2016 13:12:48 -0400
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ module Utility.UserInfo (
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Utility.Env
|
import Utility.Env
|
||||||
|
import Utility.Exception
|
||||||
|
|
||||||
import System.PosixCompat
|
import System.PosixCompat
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
|
@ -47,7 +48,7 @@ myUserGecos :: IO (Maybe String)
|
||||||
#if defined(__ANDROID__) || defined(mingw32_HOST_OS)
|
#if defined(__ANDROID__) || defined(mingw32_HOST_OS)
|
||||||
myUserGecos = return Nothing
|
myUserGecos = return Nothing
|
||||||
#else
|
#else
|
||||||
myUserGecos = Just <$> myVal [] userGecos
|
myUserGecos = catchMaybeIO $ myVal [] userGecos
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
myVal :: [String] -> (UserEntry -> String) -> IO String
|
myVal :: [String] -> (UserEntry -> String) -> IO String
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 1"""
|
||||||
|
date="2016-06-08T17:31:41Z"
|
||||||
|
content="""
|
||||||
|
IIRC it's supposed to be possible to configure a system such as LDAP
|
||||||
|
so that `getpwuid` queries it, instead of failing as it seems to on your
|
||||||
|
system, using `/etc/nsswitch.conf`. But I'm not sure about that or how to
|
||||||
|
do it and you'd need to be the admin of the system.
|
||||||
|
|
||||||
|
git-annex has three calls to `getpwuid` (aka getUserEntryForID`).
|
||||||
|
In two of them it first looks at commonly set environment variables
|
||||||
|
(HOME and USER/LOGNAME) and only uses `getpwuid` as a fallback.
|
||||||
|
It seems reasonable to crash when git-annex can't determine the user's home
|
||||||
|
directory or username in code that needs it, especially since all three
|
||||||
|
environment variables are almost always going to be set.
|
||||||
|
|
||||||
|
The third use is a GECOS lookup, and here there's no corresponding
|
||||||
|
environment variable and git-annex can deal without knowing the full name
|
||||||
|
of the user. So, I've made that not crash if `getpwuid` fails.
|
||||||
|
|
||||||
|
(There's also a little-used code path where `getpwnam` is used
|
||||||
|
to expand `~` in a git remote path. Seems best to leave this crashing
|
||||||
|
too if used on a system that does not have a working `getpwnam`.)
|
||||||
|
|
||||||
|
So, you can try upgrading to an autobuild that has the fix, and if it still
|
||||||
|
crashes, check that HOME and USER are set.
|
||||||
|
"""]]
|
Loading…
Add table
Reference in a new issue