mirror of
https://github.com/openstreetmap/mod_tile.git
synced 2025-08-08 08:24:25 +00:00
Resolve various compiler warnings and errors (#279)
* Resolved warnings in `src/daemon.c` I.E.: ``` src/daemon.c:835:16: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] char *name = iniparser_getsecname(ini, section); ^~~~~~~~~~~~~~~~~~~~ src/daemon.c:860:20: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] char *ini_uri = iniparser_getstring(ini, buffer, (char *)""); ^~~~~~~~~~~~~~~~~~~ ``` * Resolved warning in `src/mod_tile.c` I.E.: ``` ./src/mod_tile.c:327:53: warning: format '%d' expects argument of type 'int', but argument 9 has type 'long unsigned int' [-Wformat=] ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, "request_tile: Failed to read response from rendering socket. Got %d bytes but expected %d. Errno %d (%s)", ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ret, sizeof(struct protocol_v2), errno, strerror(errno)); ~~~~~~~~~~~~~~~~~~~~~~~~~~ | long unsigned int ``` * Resolved `cppcheck`-detected error I.E.: ``` src/store_rados.c:355:3: error: Memory leak: store [memleak] return NULL; ^ ``` * Fix `Does not check for buffer overflows (CWE-120)` in `src/daemon.c` * Fix `Does not check for buffer overflows (CWE-120)` in `src/cache_expire.c` * Resolved `cppcheck`-detected error I.E.: ``` src/parameterize_style.cpp:43:3: error: Memory leak: data [memleak] return; //No parameterization given ^ * url is `char *`, unlike buffer, size is not known
This commit is contained in:
@ -34,16 +34,16 @@ int daemon(int nochdir, int noclose);
|
|||||||
#define MAX_SLAVES 5
|
#define MAX_SLAVES 5
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char *socketname;
|
const char *iphostname;
|
||||||
char *iphostname;
|
const char *mapnik_font_dir;
|
||||||
|
const char *mapnik_plugins_dir;
|
||||||
|
const char *pid_filename;
|
||||||
|
const char *socketname;
|
||||||
|
const char *stats_filename;
|
||||||
|
const char *tile_dir;
|
||||||
int ipport;
|
int ipport;
|
||||||
int num_threads;
|
|
||||||
char *tile_dir;
|
|
||||||
char *mapnik_plugins_dir;
|
|
||||||
char *mapnik_font_dir;
|
|
||||||
int mapnik_font_dir_recurse;
|
int mapnik_font_dir_recurse;
|
||||||
char * stats_filename;
|
int num_threads;
|
||||||
const char * pid_filename;
|
|
||||||
} renderd_config;
|
} renderd_config;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -115,7 +115,7 @@ void cache_expire(int sock, char * host, char * uri, int x, int y, int z)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char * url = (char *)malloc(1024);
|
char * url = (char *)malloc(1024);
|
||||||
sprintf(url, "http://%s%s%i/%i/%i.png", host, uri, z, x, y);
|
snprintf(url, 1024, "http://%s%s%i/%i/%i.png", host, uri, z, x, y);
|
||||||
cache_expire_url(sock, url);
|
cache_expire_url(sock, url);
|
||||||
free(url);
|
free(url);
|
||||||
}
|
}
|
||||||
|
54
src/daemon.c
54
src/daemon.c
@ -831,7 +831,7 @@ int main(int argc, char **argv)
|
|||||||
char buffer[PATH_MAX];
|
char buffer[PATH_MAX];
|
||||||
|
|
||||||
for (int section = 0; section < iniparser_getnsec(ini); section++) {
|
for (int section = 0; section < iniparser_getnsec(ini); section++) {
|
||||||
char *name = iniparser_getsecname(ini, section);
|
const char *name = iniparser_getsecname(ini, section);
|
||||||
g_logger(G_LOG_LEVEL_INFO, "Parsing section %s", name);
|
g_logger(G_LOG_LEVEL_INFO, "Parsing section %s", name);
|
||||||
|
|
||||||
if (strncmp(name, "renderd", 7) && strcmp(name, "mapnik")) {
|
if (strncmp(name, "renderd", 7) && strcmp(name, "mapnik")) {
|
||||||
@ -855,8 +855,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
strcpy(maps[iconf].xmlname, name);
|
strcpy(maps[iconf].xmlname, name);
|
||||||
|
|
||||||
sprintf(buffer, "%s:uri", name);
|
snprintf(buffer, sizeof(buffer), "%s:uri", name);
|
||||||
char *ini_uri = iniparser_getstring(ini, buffer, (char *)"");
|
const char *ini_uri = iniparser_getstring(ini, buffer, (char *)"");
|
||||||
|
|
||||||
if (strlen(ini_uri) >= (PATH_MAX - 1)) {
|
if (strlen(ini_uri) >= (PATH_MAX - 1)) {
|
||||||
g_logger(G_LOG_LEVEL_CRITICAL, "URI too long: %s", ini_uri);
|
g_logger(G_LOG_LEVEL_CRITICAL, "URI too long: %s", ini_uri);
|
||||||
@ -865,8 +865,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
strcpy(maps[iconf].xmluri, ini_uri);
|
strcpy(maps[iconf].xmluri, ini_uri);
|
||||||
|
|
||||||
sprintf(buffer, "%s:xml", name);
|
snprintf(buffer, sizeof(buffer), "%s:xml", name);
|
||||||
char *ini_xmlpath = iniparser_getstring(ini, buffer, (char *)"");
|
const char *ini_xmlpath = iniparser_getstring(ini, buffer, (char *)"");
|
||||||
|
|
||||||
if (strlen(ini_xmlpath) >= (PATH_MAX - 1)) {
|
if (strlen(ini_xmlpath) >= (PATH_MAX - 1)) {
|
||||||
g_logger(G_LOG_LEVEL_CRITICAL, "XML path too long: %s", ini_xmlpath);
|
g_logger(G_LOG_LEVEL_CRITICAL, "XML path too long: %s", ini_xmlpath);
|
||||||
@ -875,8 +875,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
strcpy(maps[iconf].xmlfile, ini_xmlpath);
|
strcpy(maps[iconf].xmlfile, ini_xmlpath);
|
||||||
|
|
||||||
sprintf(buffer, "%s:host", name);
|
snprintf(buffer, sizeof(buffer), "%s:host", name);
|
||||||
char *ini_hostname = iniparser_getstring(ini, buffer, (char *) "");
|
const char *ini_hostname = iniparser_getstring(ini, buffer, (char *) "");
|
||||||
|
|
||||||
if (strlen(ini_hostname) >= (PATH_MAX - 1)) {
|
if (strlen(ini_hostname) >= (PATH_MAX - 1)) {
|
||||||
g_logger(G_LOG_LEVEL_CRITICAL, "Host name too long: %s", ini_hostname);
|
g_logger(G_LOG_LEVEL_CRITICAL, "Host name too long: %s", ini_hostname);
|
||||||
@ -885,8 +885,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
strcpy(maps[iconf].host, ini_hostname);
|
strcpy(maps[iconf].host, ini_hostname);
|
||||||
|
|
||||||
sprintf(buffer, "%s:htcphost", name);
|
snprintf(buffer, sizeof(buffer), "%s:htcphost", name);
|
||||||
char *ini_htcpip = iniparser_getstring(ini, buffer, (char *) "");
|
const char *ini_htcpip = iniparser_getstring(ini, buffer, (char *) "");
|
||||||
|
|
||||||
if (strlen(ini_htcpip) >= (PATH_MAX - 1)) {
|
if (strlen(ini_htcpip) >= (PATH_MAX - 1)) {
|
||||||
g_logger(G_LOG_LEVEL_CRITICAL, "HTCP host name too long: %s", ini_htcpip);
|
g_logger(G_LOG_LEVEL_CRITICAL, "HTCP host name too long: %s", ini_htcpip);
|
||||||
@ -895,8 +895,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
strcpy(maps[iconf].htcpip, ini_htcpip);
|
strcpy(maps[iconf].htcpip, ini_htcpip);
|
||||||
|
|
||||||
sprintf(buffer, "%s:tilesize", name);
|
snprintf(buffer, sizeof(buffer), "%s:tilesize", name);
|
||||||
char *ini_tilesize = iniparser_getstring(ini, buffer, (char *) "256");
|
const char *ini_tilesize = iniparser_getstring(ini, buffer, (char *) "256");
|
||||||
maps[iconf].tile_px_size = atoi(ini_tilesize);
|
maps[iconf].tile_px_size = atoi(ini_tilesize);
|
||||||
|
|
||||||
if (maps[iconf].tile_px_size < 1) {
|
if (maps[iconf].tile_px_size < 1) {
|
||||||
@ -904,8 +904,8 @@ int main(int argc, char **argv)
|
|||||||
exit(7);
|
exit(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(buffer, "%s:scale", name);
|
snprintf(buffer, sizeof(buffer), "%s:scale", name);
|
||||||
char *ini_scale = iniparser_getstring(ini, buffer, (char *) "1.0");
|
const char *ini_scale = iniparser_getstring(ini, buffer, (char *) "1.0");
|
||||||
maps[iconf].scale_factor = atof(ini_scale);
|
maps[iconf].scale_factor = atof(ini_scale);
|
||||||
|
|
||||||
if (maps[iconf].scale_factor < 0.1 || maps[iconf].scale_factor > 8.0) {
|
if (maps[iconf].scale_factor < 0.1 || maps[iconf].scale_factor > 8.0) {
|
||||||
@ -913,8 +913,8 @@ int main(int argc, char **argv)
|
|||||||
exit(7);
|
exit(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(buffer, "%s:tiledir", name);
|
snprintf(buffer, sizeof(buffer), "%s:tiledir", name);
|
||||||
char *ini_tiledir = iniparser_getstring(ini, buffer, (char *) config.tile_dir);
|
const char *ini_tiledir = iniparser_getstring(ini, buffer, (char *) config.tile_dir);
|
||||||
|
|
||||||
if (strlen(ini_tiledir) >= (PATH_MAX - 1)) {
|
if (strlen(ini_tiledir) >= (PATH_MAX - 1)) {
|
||||||
g_logger(G_LOG_LEVEL_CRITICAL, "Tiledir too long: %s", ini_tiledir);
|
g_logger(G_LOG_LEVEL_CRITICAL, "Tiledir too long: %s", ini_tiledir);
|
||||||
@ -923,8 +923,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
strcpy(maps[iconf].tile_dir, ini_tiledir);
|
strcpy(maps[iconf].tile_dir, ini_tiledir);
|
||||||
|
|
||||||
sprintf(buffer, "%s:maxzoom", name);
|
snprintf(buffer, sizeof(buffer), "%s:maxzoom", name);
|
||||||
char *ini_maxzoom = iniparser_getstring(ini, buffer, "18");
|
const char *ini_maxzoom = iniparser_getstring(ini, buffer, "18");
|
||||||
maps[iconf].max_zoom = atoi(ini_maxzoom);
|
maps[iconf].max_zoom = atoi(ini_maxzoom);
|
||||||
|
|
||||||
if (maps[iconf].max_zoom > MAX_ZOOM) {
|
if (maps[iconf].max_zoom > MAX_ZOOM) {
|
||||||
@ -932,8 +932,8 @@ int main(int argc, char **argv)
|
|||||||
exit(7);
|
exit(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(buffer, "%s:minzoom", name);
|
snprintf(buffer, sizeof(buffer), "%s:minzoom", name);
|
||||||
char *ini_minzoom = iniparser_getstring(ini, buffer, "0");
|
const char *ini_minzoom = iniparser_getstring(ini, buffer, "0");
|
||||||
maps[iconf].min_zoom = atoi(ini_minzoom);
|
maps[iconf].min_zoom = atoi(ini_minzoom);
|
||||||
|
|
||||||
if (maps[iconf].min_zoom < 0) {
|
if (maps[iconf].min_zoom < 0) {
|
||||||
@ -946,8 +946,8 @@ int main(int argc, char **argv)
|
|||||||
exit(7);
|
exit(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(buffer, "%s:parameterize_style", name);
|
snprintf(buffer, sizeof(buffer), "%s:parameterize_style", name);
|
||||||
char *ini_parameterize = iniparser_getstring(ini, buffer, "");
|
const char *ini_parameterize = iniparser_getstring(ini, buffer, "");
|
||||||
|
|
||||||
if (strlen(ini_parameterize) >= (PATH_MAX - 1)) {
|
if (strlen(ini_parameterize) >= (PATH_MAX - 1)) {
|
||||||
g_logger(G_LOG_LEVEL_CRITICAL, "Parameterize_style too long: %s", ini_parameterize);
|
g_logger(G_LOG_LEVEL_CRITICAL, "Parameterize_style too long: %s", ini_parameterize);
|
||||||
@ -976,21 +976,21 @@ int main(int argc, char **argv)
|
|||||||
exit(7);
|
exit(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(buffer, "%s:socketname", name);
|
snprintf(buffer, sizeof(buffer), "%s:socketname", name);
|
||||||
config_slaves[render_sec].socketname = iniparser_getstring(ini,
|
config_slaves[render_sec].socketname = iniparser_getstring(ini,
|
||||||
buffer, (char *) RENDER_SOCKET);
|
buffer, (char *) RENDER_SOCKET);
|
||||||
sprintf(buffer, "%s:iphostname", name);
|
snprintf(buffer, sizeof(buffer), "%s:iphostname", name);
|
||||||
config_slaves[render_sec].iphostname = iniparser_getstring(ini,
|
config_slaves[render_sec].iphostname = iniparser_getstring(ini,
|
||||||
buffer, "");
|
buffer, "");
|
||||||
sprintf(buffer, "%s:ipport", name);
|
snprintf(buffer, sizeof(buffer), "%s:ipport", name);
|
||||||
config_slaves[render_sec].ipport = iniparser_getint(ini, buffer, 0);
|
config_slaves[render_sec].ipport = iniparser_getint(ini, buffer, 0);
|
||||||
sprintf(buffer, "%s:num_threads", name);
|
snprintf(buffer, sizeof(buffer), "%s:num_threads", name);
|
||||||
config_slaves[render_sec].num_threads = iniparser_getint(ini,
|
config_slaves[render_sec].num_threads = iniparser_getint(ini,
|
||||||
buffer, NUM_THREADS);
|
buffer, NUM_THREADS);
|
||||||
sprintf(buffer, "%s:tile_dir", name);
|
snprintf(buffer, sizeof(buffer), "%s:tile_dir", name);
|
||||||
config_slaves[render_sec].tile_dir = iniparser_getstring(ini,
|
config_slaves[render_sec].tile_dir = iniparser_getstring(ini,
|
||||||
buffer, (char *) HASH_PATH);
|
buffer, (char *) HASH_PATH);
|
||||||
sprintf(buffer, "%s:stats_file", name);
|
snprintf(buffer, sizeof(buffer), "%s:stats_file", name);
|
||||||
config_slaves[render_sec].stats_filename = iniparser_getstring(ini,
|
config_slaves[render_sec].stats_filename = iniparser_getstring(ini,
|
||||||
buffer, NULL);
|
buffer, NULL);
|
||||||
snprintf(buffer, sizeof(buffer), "%s:pid_file", name);
|
snprintf(buffer, sizeof(buffer), "%s:pid_file", name);
|
||||||
|
@ -325,7 +325,7 @@ static int request_tile(request_rec *r, struct protocol *cmd, int renderImmediat
|
|||||||
|
|
||||||
if (ret != sizeof(struct protocol_v2)) {
|
if (ret != sizeof(struct protocol_v2)) {
|
||||||
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, "request_tile: Failed to read response from rendering socket. Got %d bytes but expected %d. Errno %d (%s)",
|
ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, "request_tile: Failed to read response from rendering socket. Got %d bytes but expected %d. Errno %d (%s)",
|
||||||
ret, sizeof(struct protocol_v2), errno, strerror(errno));
|
ret, (int) sizeof(struct protocol_v2), errno, strerror(errno));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ static void parameterize_map_language(mapnik::Map &m, char * parameter)
|
|||||||
tok = strtok(data, ",");
|
tok = strtok(data, ",");
|
||||||
|
|
||||||
if (!tok) {
|
if (!tok) {
|
||||||
|
free(data);
|
||||||
return; //No parameterization given
|
return; //No parameterization given
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -352,6 +352,8 @@ struct storage_backend * init_storage_rados(const char * connection_string)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
|
free(ctx);
|
||||||
|
free(store);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user