summaryrefslogtreecommitdiff
path: root/.gitignore
diff options
context:
space:
mode:
authorMatt Cowell <matt.cowell@nokia.com>2019-08-29 16:36:35 -0500
committerTomáš Mráz <t8m@users.noreply.github.com>2019-09-02 11:28:31 +0200
commit9de67eee2cf8c3024f7bee7393ea762ac7bd09ab (patch)
tree442ba3e354bdb3bf070fc74908dd4262d48e0845 /.gitignore
parent1b087edc7f05237bf5eccc405704cd82b848e761 (diff)
pwhistory: fix read of uninitialized data and memory leak when modifying opasswd
The glibc implementation of getline/getdelim does not guarantee a NUL terminator in lineptr if getline returns failure (-1). This occurs when the opasswd file exists but is empty. Since strdup is called immediately afterwards, this causes strdup to read uninitialized memory and possibly buffer overrun / crash. This also fixes a memory leak which always occurs when reading the last line of the opasswd file. Since the strdup is called before checking the return code from getline, getdelim, or fgets+strlen, it will duplicate and never free either: - The last successfully read line (for getline or getdelim) - Uninitialized data (if the file is empty) - A 0 byte string (for fgets+strlen) Fix by always checking the return code of getline, getdelim, or fgets+strlen before calling strdup.
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions