[Bug 1653481] [NEW] Memory leak in libcrypt.so
Andrew Parker
1653481 at bugs.launchpad.net
Mon Jan 2 06:20:59 UTC 2017
Public bug reported:
ubuntu version: 16.04 LTS (also seen in 14.04 and suspect all versions)
glibc version: 2.23
Repeatedly opening libcrypt.so, calling crypt and closing libcrypt.so
leaks memory. I believe the issue is with static arrays which are
allocated on demand but never deallocated. See both md5-crypt.c and
sha256-crypt.c: both these files have a static buffer:
libc_freeres_ptr (static char *buffer);
which is allocated by the __md5_crypt and __sha256_crypt functions
respectively.
This is not a pathological issue. I have encountered it in a real world
use case. The following describes the situation in which it occurred.
- A continuously running process uses PAM to perform authentication.
- PAM module used relies on crypt function call.
- Each call to auth causes libcrypt.so to be loaded and unloaded.
- Result: Small leak in main process each time auth is performed.
Workaround was to force a dependency in the main processes source code
on libcrypt.so thus keeping the library permanently in memory.
I suspect this may be a bug destined for glibc itself rather than the
Ubuntu distribution but, as per glibc guidelines, I'm reporting it here
first. I haven't investigated the source code in enough detail yet to
conclude where the responsibility for the bug lies.
** Affects: glibc (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to glibc in Ubuntu.
https://bugs.launchpad.net/bugs/1653481
Title:
Memory leak in libcrypt.so
Status in glibc package in Ubuntu:
New
Bug description:
ubuntu version: 16.04 LTS (also seen in 14.04 and suspect all versions)
glibc version: 2.23
Repeatedly opening libcrypt.so, calling crypt and closing libcrypt.so
leaks memory. I believe the issue is with static arrays which are
allocated on demand but never deallocated. See both md5-crypt.c and
sha256-crypt.c: both these files have a static buffer:
libc_freeres_ptr (static char *buffer);
which is allocated by the __md5_crypt and __sha256_crypt functions
respectively.
This is not a pathological issue. I have encountered it in a real
world use case. The following describes the situation in which it
occurred.
- A continuously running process uses PAM to perform authentication.
- PAM module used relies on crypt function call.
- Each call to auth causes libcrypt.so to be loaded and unloaded.
- Result: Small leak in main process each time auth is performed.
Workaround was to force a dependency in the main processes source code
on libcrypt.so thus keeping the library permanently in memory.
I suspect this may be a bug destined for glibc itself rather than the
Ubuntu distribution but, as per glibc guidelines, I'm reporting it
here first. I haven't investigated the source code in enough detail
yet to conclude where the responsibility for the bug lies.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1653481/+subscriptions
More information about the foundations-bugs
mailing list