Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#959 closed defect/bug (fixed)

Navit crashes if destination.txt cannot be written

Reported by: sleske Owned by: KaZeR
Priority: major Milestone:
Component: core Version: git master
Severity: Keywords:
Cc: nick@…

Description

If destination.txt cannot be written to (for example because of filesystem permissions), Navit will segfault as soon as it tries to write to it.

To reproduce (on Linux):

  • set destination.txt read-only: chmod a-w path/to/destination.txt
  • start Navit
  • set a destination (by choosing a bookmark, or entering it directly)

Navit will segfault. Backtrace (shortened):

[...]
#4  0x08062ecf in sigsegv (sig=11) at debug.c:80
#5  <signal handler called>
#6  0xb7463e47 in fclose () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
#7  0x08093074 in bookmarks_append_coord at bookmarks.c:704
#8  0x080731ff in navit_set_destination  at navit.c:1483
[...]

Attachments (2)

fix-for-959.patch (450 bytes) - added by sleske 7 years ago.
Fix for issue #959: Do not call fclose() if fopen() failed
bookmarks.c.patch (429 bytes) - added by number6 7 years ago.
This patch uses dbg to notify the user, and stops the program from crashing

Download all attachments as: .zip

Change History (6)

Changed 7 years ago by sleske

Fix for issue #959: Do not call fclose() if fopen() failed

comment:1 Changed 7 years ago by sleske

The cause of this crash is that Navit tries to close the file handle for destination.txt, even if the fopen() call failed (in bookmarks.c, function bookmarks_append_coord).

I attached a patch to fix this.

Changed 7 years ago by number6

This patch uses dbg to notify the user, and stops the program from crashing

comment:2 Changed 7 years ago by number6

  • Cc nick@… added

comment:3 Changed 7 years ago by number6

  • Resolution set to fixed
  • Status changed from new to closed

Added my own patch in Revision 4845!

comment:4 Changed 7 years ago by sleske

Hm, to be honest, I believe my patch is a bit better (because it prints the cause of the error). Anyway, the main thing is that it's fixed.

Note: See TracTickets for help on using tickets.