mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-05 02:36:19 +01:00
glib/gfileutils.c: use 64 bits for value in get_tmp_file()
On 32 bit systems 'long' value will overflow in 2038 and become negative. As it is used to index into letters array, and % operation preserves signs, data corruption will then occur. Signed-off-by: Alexander Kanavin <alex@linutronix.de>
This commit is contained in:
parent
40fb81f0ea
commit
b4d60ba136
@ -1500,7 +1500,7 @@ get_tmp_file (gchar *tmpl,
|
|||||||
static const char letters[] =
|
static const char letters[] =
|
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||||
static const int NLETTERS = sizeof (letters) - 1;
|
static const int NLETTERS = sizeof (letters) - 1;
|
||||||
glong value;
|
gint64 value;
|
||||||
gint64 now_us;
|
gint64 now_us;
|
||||||
static int counter = 0;
|
static int counter = 0;
|
||||||
|
|
||||||
@ -1521,7 +1521,7 @@ get_tmp_file (gchar *tmpl,
|
|||||||
|
|
||||||
for (count = 0; count < 100; value += 7777, ++count)
|
for (count = 0; count < 100; value += 7777, ++count)
|
||||||
{
|
{
|
||||||
glong v = value;
|
gint64 v = value;
|
||||||
|
|
||||||
/* Fill in the random bits. */
|
/* Fill in the random bits. */
|
||||||
XXXXXX[0] = letters[v % NLETTERS];
|
XXXXXX[0] = letters[v % NLETTERS];
|
||||||
|
Loading…
Reference in New Issue
Block a user