subsurface/core
Linus Torvalds 8c408da9ab Fix the dive site XML saving
It turns out that the dive site saving was subtly but horribly buggy.
To save the value of the dive site, it did

    show_utf8_blanked(b, t->value, " value='", "'/>\n", 1, anonymize);

which looks sane on the face of it, but the problem is that it puts the
final closing xml marker in the 'append this at the end' case.

That means that if the value is empty, the value won't be saved, but
neither will the closing tag.  Resulting in an xml line that looks like
this:

  <geo cat='3' origin='0'  <geo cat='5' origin='0' value='Other name'/>

where the first geo tag was saved without the ending marker.

That then makes all the xml nesting entirely wrong, and the whole file
fails to save.

Now, the code around it does check that 't->value' is not NULL, but it
doesn't check for a value that is empty or all spaces (which also will
make 'show_utf8()' just skip it.

Fix it by saving the end marker separately:

    show_utf8_blanked(b, t->value, " value='", "'", 1, anonymize);
    put_format(b, "/>\n");

so that the xml is valid even if the goe marker value wasn'r.

Reported-by: Bob Barker <barkerb1965@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-08-19 12:28:20 -07:00
..
settings Cleanup: move deco function declarations to deco.h 2019-07-18 05:42:55 -07:00
subsurface-qt DiveObjectHelper: warn if object is generated from the null pointer 2019-08-12 16:28:49 -07:00
android.cpp Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
applicationstate.cpp Turn application state into enum 2019-05-12 12:33:55 -07:00
applicationstate.h Turn application state into enum 2019-05-12 12:33:55 -07:00
btdiscovery.cpp Add BLE name recognition for the Deepblu Cosmiq+ 2019-08-18 23:28:48 +03:00
btdiscovery.h Mobile: only show dive computers in the Bluetooth connection list 2019-02-14 09:05:58 -08:00
checkcloudconnection.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
checkcloudconnection.h get rid of some foreach and Q_FOREACH constructs 2019-04-12 12:59:17 +03:00
cloudstorage.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
cloudstorage.h get rid of some foreach and Q_FOREACH constructs 2019-04-12 12:59:17 +03:00
CMakeLists.txt Cleanup: move gas-functions to own translation unit 2019-06-19 13:11:10 -07:00
cochran.c Core: pass dive, cylinder-id to fill_default_cylinder 2019-08-08 16:26:31 -07:00
cochran.h
color.cpp Cleanup: silence clang missing braces warning in core/color.cpp 2018-09-01 11:31:18 -07:00
color.h Indicate negative cylider pressure 2019-08-08 08:56:44 -07:00
compressibility.r
configuredivecomputer.cpp Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
configuredivecomputer.h
configuredivecomputerthreads.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
configuredivecomputerthreads.h
connectionlistmodel.cpp Mobile: reinstate roleNames function in ConnectionListModel 2019-04-16 23:43:14 +12:00
connectionlistmodel.h Mobile: reinstate roleNames function in ConnectionListModel 2019-04-16 23:43:14 +12:00
datatrak.c Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
datatrak.h Cleanup: const-ify functions taking dives and divecomputers 2018-08-23 14:41:01 -07:00
deco.c Parser: remove global state 2019-08-08 16:26:31 -07:00
deco.h Parser: remove global state 2019-08-08 16:26:31 -07:00
device.c core: replace (void) with UNUSED(x) and include ssrf.h 2018-05-24 08:34:14 -07:00
device.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
devicedetails.cpp
devicedetails.h
display.h Cleanup: remove unused get_screen_dpi() function 2019-07-06 04:10:14 -07:00
dive.c Cleanup: move planner/deco related declarations planner/deco.h 2019-08-08 16:26:31 -07:00
dive.h Core: pass dive, cylinder-id to fill_default_cylinder 2019-08-08 16:26:31 -07:00
divecomputer.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
divecomputer.h Dive computers: turn QMultiMap into sorted vector 2018-06-17 06:53:13 +09:00
divelist.c Cleanup: use clear_git_id() instead of setting saved_git_id 2019-08-04 16:22:19 -07:00
divelist.h Cleanup: move planner/deco related declarations planner/deco.h 2019-08-08 16:26:31 -07:00
divelogexportlogic.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
divelogexportlogic.h avoid duplicate and inconsistent applying of QDir::separator() 2019-03-27 07:36:33 -07:00
divemode.h Cleanup: move planner/deco related declarations planner/deco.h 2019-08-08 16:26:31 -07:00
divesite-helper.cpp Dive site: use own copy of taxonomy in dive-site-edit widget 2018-10-13 21:41:41 -04:00
divesite.c Cleanup: generate clear_*_table() functions by macro 2019-06-19 13:11:10 -07:00
divesite.h Undo: make dive site merging undoable 2019-04-12 18:19:07 +03:00
divesitehelpers.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
divesitehelpers.h Geo lookup: don't pass arguments / result via global object 2018-10-11 16:25:02 -07:00
downloadfromdcthread.cpp Cleanup: remove includes from qthelper.h 2019-07-18 05:42:55 -07:00
downloadfromdcthread.h Dive sites: prepare for dive site ref-counting 2019-04-12 18:19:07 +03:00
equipment.c Cleanup: remove unused weightsystem_none() function 2019-07-18 06:01:07 -07:00
equipment.h Cleanup: remove unused weightsystem_none() function 2019-07-18 06:01:07 -07:00
errorhelper.c Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
errorhelper.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
exif.cpp Coding-style: remove superfluous parentheses 2018-02-17 19:38:52 -08:00
exif.h
file.c Fix potential crash when saved_git_id is NULL 2019-08-10 20:59:53 +02:00
file.h Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
format.cpp Cleanup: Slightly shorten code in vqasprintf_loc() 2018-04-09 11:29:43 -07:00
format.h Cleanup: Move *_loc formatting functions into new format.cpp file 2018-04-09 11:29:43 -07:00
gas-model.c Cleanup: replace macro by inline function in gas-model.c 2019-08-08 15:22:09 -07:00
gas.c Cleanup: move gas-functions to own translation unit 2019-06-19 13:11:10 -07:00
gas.h Cleanup: move gas-functions to own translation unit 2019-06-19 13:11:10 -07:00
gaspressures.c Cleanup: introduce function to set pressure values 2019-07-18 05:50:22 -07:00
gaspressures.h Cleanup: Make gaspressures.h a regular include file 2019-06-19 13:11:10 -07:00
gettext.h
gettextfromc.cpp Localization: make cache thread safe and robust against use-after-free 2018-06-24 20:31:14 +02:00
gettextfromc.h Localization: remove gettextFromC::instance() 2018-06-24 20:31:14 +02:00
git-access.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
git-access.h prefs: git_local_only is not a preference 2018-09-10 16:26:49 -07:00
gpslocation.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
gpslocation.h Add 'location_t' data structure 2018-10-21 19:55:09 +03:00
imagedownloader.cpp Core: remove variable name conflict 2019-03-18 19:40:32 -07:00
imagedownloader.h Profile: add "synchronous" mode for picture plotting 2019-02-07 16:06:43 +01:00
import-cobalt.c Dive site: add dive site ref-counting 2019-04-12 18:19:07 +03:00
import-csv.c Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
import-csv.h Parser: parse into custom dive site table 2019-04-12 18:19:07 +03:00
import-divinglog.c Core: dynamically resize weight table 2019-07-18 06:01:07 -07:00
import-shearwater.c Parser: parse into custom dive site table 2019-04-12 18:19:07 +03:00
import-suunto.c Cleanup: move tag functions into own translation unit 2019-06-19 13:11:10 -07:00
ios.cpp Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
libdivecomputer.c Core: pass dive, cylinder-id to fill_default_cylinder 2019-08-08 16:26:31 -07:00
libdivecomputer.h Core: unconditionally include stdio.h in libdivecomputer.h 2019-08-10 09:16:01 -07:00
liquivision.c Core: pass dive, cylinder-id to fill_default_cylinder 2019-08-08 16:26:31 -07:00
load-git.c Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
macos.c Add missing header files to macos.c 2019-08-11 08:20:38 +02:00
membuffer.c Cleanup: unconstify string argument to add_to_string() 2019-03-27 13:58:15 +01:00
membuffer.h Cleanup: fix includes in membuffer.h 2019-06-19 13:11:10 -07:00
metadata.cpp Add 'location_t' data structure 2018-10-21 19:55:09 +03:00
metadata.h Add 'location_t' data structure 2018-10-21 19:55:09 +03:00
metrics.cpp
metrics.h
ostctools.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
parse-xml.c Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
parse.c Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
parse.h Core: dynamically resize weight table 2019-07-18 06:01:07 -07:00
planner.c Planner: pass dive to enough_gas() 2019-08-08 16:26:31 -07:00
planner.h Cleanup: move planner/deco related declarations planner/deco.h 2019-08-08 16:26:31 -07:00
plannernotes.c Update deco disclaimer 2019-05-29 15:04:33 +03:00
pref.h Add UI element for final surface segment in planner 2019-03-29 06:51:12 -07:00
profile.c Android: fix potential crash 2019-08-10 20:59:53 +02:00
profile.h Cleanup: move planner/deco related declarations planner/deco.h 2019-08-08 16:26:31 -07:00
qt-ble.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
qt-ble.h get rid of some foreach and Q_FOREACH constructs 2019-04-12 12:59:17 +03:00
qt-gui.h core,tests: change qml register function 2018-09-11 17:22:58 -07:00
qt-init.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
qthelper.cpp Cleanup: move planner/deco related declarations planner/deco.h 2019-08-08 16:26:31 -07:00
qthelper.h Cleanup: remove includes from qthelper.h 2019-07-18 05:42:55 -07:00
qtserialbluetooth.cpp drop support for Qt 5.4 and before 2019-03-27 07:36:33 -07:00
save-git.c Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
save-html.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
save-html.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
save-profiledata.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
save-profiledata.h Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
save-xml.c Fix the dive site XML saving 2019-08-19 12:28:20 -07:00
serial_ftdi.c Fix Cressi interface ftdi opening bug 2018-11-18 20:01:28 +02:00
sha1.c
sha1.h
ssrf.h mobile: add timer to measure startup. 2018-05-30 21:47:07 -07:00
statistics.c Cleanup: move trip-related functions into own translation unit 2019-06-19 13:11:10 -07:00
statistics.h Add backend support for statistics by depth and temperature 2019-03-12 00:53:51 +01:00
strndup.h
strtod.c Core: introduce new subsurface-string header 2018-05-14 10:13:39 -07:00
structured_list.h Cleanup: fix comment to STRUCTURED_LIST_FREE 2019-06-19 13:11:10 -07:00
subsurface-string.h Core: don't inline rarely used function 2018-05-14 10:13:39 -07:00
subsurfacestartup.c Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
subsurfacestartup.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
subsurfacesysinfo.cpp drop support for Qt 5.4 and before 2019-03-27 07:36:33 -07:00
subsurfacesysinfo.h drop support for Qt 5.4 and before 2019-03-27 07:36:33 -07:00
table.h Core: dynamically resize weight table 2019-07-18 06:01:07 -07:00
tag.c Cleanup: move tag functions into own translation unit 2019-06-19 13:11:10 -07:00
tag.h Cleanup: move tag functions into own translation unit 2019-06-19 13:11:10 -07:00
taxonomy.c Dive site: use own copy of taxonomy in dive-site-edit widget 2018-10-13 21:41:41 -04:00
taxonomy.h Dive site: use own copy of taxonomy in dive-site-edit widget 2018-10-13 21:41:41 -04:00
time.c
trip.c Import: use TRIP_THRESHOLD when checking for trip-overlap 2019-06-28 20:13:49 +09:00
trip.h Import: use TRIP_THRESHOLD when checking for trip-overlap 2019-06-28 20:13:49 +09:00
uemis-downloader.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
uemis.c Dive sites: prepare for dive site ref-counting 2019-04-12 18:19:07 +03:00
uemis.h Dive site: use pointer instead of uuid in uemis_helper 2018-10-29 00:09:31 +00:00
units.c Cleanup: move unit-related functions to own translation unit 2019-06-19 13:11:10 -07:00
units.h Cleanup: move unit-related functions to own translation unit 2019-06-19 13:11:10 -07:00
unix.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
version.c
version.h
videoframeextractor.cpp Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
videoframeextractor.h Dive media: Extract thumbnails from videos with ffmpeg 2018-07-28 15:31:25 -07:00
webservice.h
windows.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
windowtitleupdate.cpp Cleanup: Make WindowsTitleUpdate a global object 2018-07-30 13:55:23 -07:00
windowtitleupdate.h Cleanup: Make WindowsTitleUpdate a global object 2018-07-30 13:55:23 -07:00
worldmap-options.h
worldmap-save.c Cleanup: move file-related function declarations to file.h 2019-08-08 16:26:31 -07:00
worldmap-save.h Cleanup: move error reporting function declarations to errorhelper.h 2019-08-08 16:26:30 -07:00
xmp_parser.cpp Desktop: fix yet another variable name conflict 2019-03-18 19:40:32 -07:00
xmp_parser.h Metadata: rudimentary support for XMP metadataa in MP4-based videos 2018-09-25 14:59:14 -07:00