From f43d344581d700673c0eb6a6f5f30f1f1cc74702 Mon Sep 17 00:00:00 2001 From: afaber Date: Wed, 13 Feb 2008 19:56:16 +0000 Subject: [PATCH] Fix:tools/osm2navit: avoid buffer overflow when attrib debug string gets too long git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@862 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- navit/src/osm2navit.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/navit/src/osm2navit.c b/navit/src/osm2navit.c index 7828507..e610fea 100644 --- a/navit/src/osm2navit.c +++ b/navit/src/osm2navit.c @@ -410,8 +410,13 @@ add_tag(char *k, char *v) level=5; } if (attr_debug_level >= level) { - sprintf(debug_attr_buffer+strlen(debug_attr_buffer), " %s=%s", k, v); - node_is_tagged=1; + int bytes_left = sizeof( debug_attr_buffer ) - strlen(debug_attr_buffer) - 1; + if ( bytes_left > 0 ) + { + snprintf(debug_attr_buffer+strlen(debug_attr_buffer), bytes_left, " %s=%s", k, v); + debug_attr_buffer[ sizeof( debug_attr_buffer ) - 1 ] = '\0'; + node_is_tagged=1; + } } if (level < 6) node_is_tagged=1; @@ -1225,7 +1230,7 @@ phase34_process_file(int phase, FILE *in) max=8; if (ib->type == type_street_3_city || ib->type == type_street_4_city || ib->type == type_street_3_land || ib->type == type_street_4_land) max=12; - + tile(&r, buffer, max); #if 0 fprintf(stderr,"%s\n", buffer); -- 2.7.4