Skip to content

Commit ba27f1b

Browse files
authored
Add Origin header test for CORS not being set (openstreetmap#480)
Also moved `cors = NULL` fix from openstreetmap#479 into `_add_tile_config` instead as that fix only applied to configs added via `AddTileConfig` in `httpd.conf` files, not all methods.
1 parent d571b58 commit ba27f1b

File tree

2 files changed

+78
-2
lines changed

2 files changed

+78
-2
lines changed

src/mod_tile.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1871,6 +1871,7 @@ static const char *_add_tile_config(cmd_parms *cmd,
18711871

18721872
int attribution_len = strnlen(attribution, PATH_MAX);
18731873
int baseuri_len = strnlen(baseuri, PATH_MAX);
1874+
int cors_len = strnlen(cors, PATH_MAX);
18741875
int hostnames_len = 1;
18751876
int server_alias_len = strnlen(server_alias, PATH_MAX);
18761877
int tile_dir_len = strnlen(tile_dir, PATH_MAX);
@@ -1887,6 +1888,11 @@ static const char *_add_tile_config(cmd_parms *cmd,
18871888
baseuri = apr_psprintf(cmd->pool, "%s/", baseuri);
18881889
}
18891890

1891+
// If cors is empty, set it to NULL
1892+
if (cors_len == 0) {
1893+
cors = NULL;
1894+
}
1895+
18901896
// If server_alias is set, increment hostnames_len
18911897
if (server_alias_len > 0) {
18921898
hostnames_len++;
@@ -1954,7 +1960,7 @@ static const char *_add_tile_config(cmd_parms *cmd,
19541960

19551961
static const char *add_tile_mime_config(cmd_parms *cmd, void *mconfig, const char *baseuri, const char *name, const char *fileExtension)
19561962
{
1957-
char *cors = NULL;
1963+
char *cors = "";
19581964
char *mimeType = "image/png";
19591965

19601966
if (strcmp(fileExtension, "js") == 0) {
@@ -2010,7 +2016,7 @@ static const char *add_tile_config(cmd_parms *cmd, void *mconfig, int argc, char
20102016
return "AddTileConfig error, the configured zoom level lies outside of the range supported by this server";
20112017
}
20122018

2013-
return _add_tile_config(cmd, baseuri, name, minzoom, maxzoom, 1, 1, fileExtension, mimeType, "", "", "", NULL, tile_dir, 0);
2019+
return _add_tile_config(cmd, baseuri, name, minzoom, maxzoom, 1, 1, fileExtension, mimeType, "", "", "", "", tile_dir, 0);
20142020
}
20152021

20162022
static const char *load_tile_config(cmd_parms *cmd, void *mconfig, const char *config_file_name)

tests/CMakeLists.txt

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -888,6 +888,76 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
888888
services_started_${STORAGE_BACKEND}
889889
)
890890

891+
# Generate URL path for tiles
892+
set(TILE_URL_PATH "/tiles/${DEFAULT_MAP_NAME}/5/5/5.png")
893+
# Generate tile URLs
894+
set(HTTPD0_URL "http://${HTTPD0_HOST}:${HTTPD0_PORT}${TILE_URL_PATH}")
895+
set(HTTPD1_URL "http://${HTTPD1_HOST}:${HTTPD1_PORT}${TILE_URL_PATH}")
896+
add_test(NAME cors_empty_${STORAGE_BACKEND}
897+
COMMAND ${BASH} -c "
898+
RESPONSE_CODE_CMD=\"${CURL_CMD} --write-out %{http_code} --output /dev/null\"
899+
RESPONSE_CODE=$(\${RESPONSE_CODE_CMD} ${HTTPD0_URL})
900+
echo \"Response code: '\${RESPONSE_CODE}'\"
901+
if [ \"\${RESPONSE_CODE}\" != \"200\" ]; then
902+
exit 1;
903+
fi
904+
RESPONSE_CODE=$(\${RESPONSE_CODE_CMD} ${HTTPD1_URL})
905+
echo \"Response code: '\${RESPONSE_CODE}'\"
906+
if [ \"\${RESPONSE_CODE}\" != \"200\" ]; then
907+
exit 1;
908+
fi
909+
RESPONSE_CODE=$(\${RESPONSE_CODE_CMD} --header \"Origin: example.com\" ${HTTPD0_URL})
910+
echo \"Response code: '\${RESPONSE_CODE}'\"
911+
if [ \"\${RESPONSE_CODE}\" != \"200\" ]; then
912+
exit 1;
913+
fi
914+
RESPONSE_CODE=$(\${RESPONSE_CODE_CMD} --header \"Origin: example.com\" ${HTTPD1_URL})
915+
echo \"Response code: '\${RESPONSE_CODE}'\"
916+
if [ \"\${RESPONSE_CODE}\" != \"200\" ]; then
917+
exit 1;
918+
fi
919+
"
920+
WORKING_DIRECTORY tests
921+
)
922+
set_tests_properties(cors_empty_${STORAGE_BACKEND} PROPERTIES
923+
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
924+
)
925+
926+
# Generate URL path for tiles
927+
set(TILE_URL_PATH "/good_add_tile_config/${TILE_ZXY}.png")
928+
# Generate tile URLs
929+
set(HTTPD0_URL "http://${HTTPD0_HOST}:${HTTPD0_PORT}${TILE_URL_PATH}")
930+
set(HTTPD1_URL "http://${HTTPD1_HOST}:${HTTPD1_PORT}${TILE_URL_PATH}")
931+
add_test(NAME cors_empty_${STORAGE_BACKEND}_add_tile_config
932+
COMMAND ${BASH} -c "
933+
RESPONSE_CODE_CMD=\"${CURL_CMD} --write-out %{http_code} --output /dev/null\"
934+
RESPONSE_CODE=$(\${RESPONSE_CODE_CMD} ${HTTPD0_URL})
935+
echo \"Response code: '\${RESPONSE_CODE}'\"
936+
if [ \"\${RESPONSE_CODE}\" != \"200\" ]; then
937+
exit 1;
938+
fi
939+
RESPONSE_CODE=$(\${RESPONSE_CODE_CMD} ${HTTPD1_URL})
940+
echo \"Response code: '\${RESPONSE_CODE}'\"
941+
if [ \"\${RESPONSE_CODE}\" != \"200\" ]; then
942+
exit 1;
943+
fi
944+
RESPONSE_CODE=$(\${RESPONSE_CODE_CMD} --header \"Origin: example.com\" ${HTTPD0_URL})
945+
echo \"Response code: '\${RESPONSE_CODE}'\"
946+
if [ \"\${RESPONSE_CODE}\" != \"200\" ]; then
947+
exit 1;
948+
fi
949+
RESPONSE_CODE=$(\${RESPONSE_CODE_CMD} --header \"Origin: example.com\" ${HTTPD1_URL})
950+
echo \"Response code: '\${RESPONSE_CODE}'\"
951+
if [ \"\${RESPONSE_CODE}\" != \"200\" ]; then
952+
exit 1;
953+
fi
954+
"
955+
WORKING_DIRECTORY tests
956+
)
957+
set_tests_properties(cors_empty_${STORAGE_BACKEND}_add_tile_config PROPERTIES
958+
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
959+
)
960+
891961
# Generate URL path for tiles
892962
set(TILE_URL_PATH "/tiles/cors_all/${TILE_ZXY}.png")
893963
# Generate tile URLs

0 commit comments

Comments
 (0)