26 lines
637 B
Diff
26 lines
637 B
Diff
diff -urNp tar-1.22-orig/src/misc.c tar-1.22/src/misc.c
|
|
--- tar-1.22-orig/src/misc.c 2007-06-27 15:30:32.000000000 +0200
|
|
+++ tar-1.22/src/misc.c 2010-02-04 12:05:00.000000000 +0100
|
|
@@ -255,7 +255,20 @@ code_timespec (struct timespec t, char s
|
|
time_t s = t.tv_sec;
|
|
int ns = t.tv_nsec;
|
|
char *np;
|
|
- bool negative = s < 0;
|
|
+ bool negative;
|
|
+
|
|
+ /* ignore any negative ns value */
|
|
+ if (ns < 0)
|
|
+ ns = 0;
|
|
+
|
|
+ /* ensure (ns < BILLION) to avoid SIGSEGV within code_ns_fraction () */
|
|
+ if (BILLION <= ns )
|
|
+ {
|
|
+ s += ns / BILLION;
|
|
+ ns %= BILLION;
|
|
+ }
|
|
+
|
|
+ negative = s < 0;
|
|
|
|
if (negative && ns != 0)
|
|
{
|