summaryrefslogtreecommitdiff
path: root/indra/llcommon/llsdserialize.cpp
AgeCommit message (Collapse)Author
2023-02-09Merge branch 'main' into DRTVWR-577-maint-SAndrey Kleshchev
# Conflicts: # indra/llcommon/llsdserialize.cpp # indra/llcommon/llsdserialize.h # indra/newview/llfilepicker.h # indra/newview/llfilepicker_mac.h # indra/newview/llfilepicker_mac.mm
2022-12-06DRTVWR-575: Update a few more int lengths in llsdserialize.{h,cpp}.Nat Goodspeed
2022-12-06DRTVWR-575: Use llssize (signed size_t) for max_bytes parameters.Nat Goodspeed
Since LLSDSerialize::SIZE_UNLIMITED is negative, passing that through unsigned size_t parameters could result in peculiar behavior.
2022-11-12DRTVWR-575: Address review comments on Xcode 14.1 type tweaks.Nat Goodspeed
Introduce LLSD template constructors and assignment operators to disambiguate construction or assignment from any integer type to Integer, likewise any floating point type to Real. Use new narrow() function to validate conversions. For LLSD method parameters converted from LLSD::Integer to size_t, where the method previously checked for a negative argument, make it now check for size_t converted from negative: in other words, more than S32_MAX. The risk of having a parameter forced from negative to unsigned exceeds the risk of a valid length or index over that max. In lltracerecording.cpp's PeriodicRecording, now that mCurPeriod and mNumRecordedPeriods are size_t instead of S32, defend against subtracting 1 from 0. Use narrow() to validate newly-introduced narrowing conversions. Make llclamp() return the type of the raw input value, even if the types of the boundary values differ. std::ostream::tellp() no longer returns a value we can directly report as a number. Cast to U64.
2022-11-03DRTVWR-575: Fix llcommon assumptions that size_t fits in 4 bytes.Nat Goodspeed
It's a little distressing how often we have historically coded S32 or U32 to pass a length or index. There are more such assumptions in other viewer subdirectories, but this is a start.
2022-09-27Introduce a U8* based interface to unzip_llsd and unpackVolumeFacesRye Mutt
2021-09-08SL-14541 Replace zlib with zlib-ngAndrey Kleshchev
2020-05-14DRTVWR-476: Make LLSDFormatter::OPTIONS_PRETTY_BINARY uppercaseNat Goodspeed
for compatibility with Python llbase.llsd.parse(). The Python parse() currently requires uppercase hex digits for b16"hex" coding; lowercase hex digits cause it to raise LLSDParseError.
2020-05-13DRTVWR-476: Default LLSDNotationFormatter now OPTIONS_PRETTY_BINARY.Nat Goodspeed
LLSDNotationFormatter (also LLSDNotationStreamer that uses it, plus operator<<(std::ostream&, const LLSD&) that uses LLSDNotationStreamer) is most useful for displaying LLSD to a human, e.g. for logging. Having the default dump raw binary bytes into the log file is not only suboptimal, it can truncate the output if one of those bytes is '\0'. (This is a problem with the logging subsystem, but that's a story for another day.) Use OPTIONS_PRETTY_BINARY wherever there is a default LLSDFormatter ::EFormatterOptions argument. Also, allow setting LLSDFormatter subclass boolalpha(), realFormat() and format(options) using optional constructor arguments. Naturally, each subclass that supports this must accept and forward these constructor arguments to its LLSDFormatter base class constructor. Fix a couple bugs in LLSDNotationFormatter::format_impl() for an LLSD::Binary value with OPTIONS_PRETTY_BINARY: - The code unconditionally emitted a b(len) type prefix followed by either raw binary or hex, depending on the option flag. OPTIONS_PRETTY_BINARY caused it to emit "0x" before the hex representation of the data. This is wrong in that it can't be read back by either the C++ or the Python LLSD parser. Correct OPTIONS_PRETTY_BINARY formatting consists of b16"hex digits" rather than b(len)"raw bytes". - Although the code did set hex mode, it didn't set either the field width or the fill character, so that a byte value less than 16 would emit a single digit rather than two. Instead of having one LLSDFormatter::format() method with an optional options argument, declare two overloads. The format() overload without options passes the mOptions data member to the overload accepting options. Refactor the LLSDFormatter family, hoisting the recursive format_impl() method (accepting level) to a pure virtual method at LLSDFormatter base-class level. Most subclasses therefore need not override either base-class format() method, only format_impl(). In fact the short format() overload isn't even virtual. Consistently use LLSDFormatter::EFormatterOptions enum as the options parameter wherever such options are accepted.
2020-04-20Merge branch 'master' into DRTVWR-500Andrey Lihatskiy
# Conflicts: # indra/newview/pipeline.cpp
2019-10-23SL-11727 Fix build warningsandreykproductengine
2018-05-22MergeRider Linden
2018-03-07MergeRider Linden
2018-02-26Added settings inventory object with subtypeRider Linden
2018-02-19MAINT-8308 Additional logging for mesh processingandreykproductengine
2018-02-19MAINT-8022 Handling memory errors in unzip_llsdNavMeshandreykproductengine
2018-02-01MAINT-2338 Implemented binary parser depth controlandreykproductengine
2018-01-03MAINT-8022 Make unzip silent yet include failure reason into outputandreykproductengine
2018-01-02MAINT-8022 String crashes in unzip_llsdandreykproductengine
2017-11-28MAINT-8022 Crashes in unzip_llsd #2andreykproductengine
2017-11-27MAINT-8022 Crashes in unzip_llsdandreykproductengine
2017-06-07MAINT-6697 Correct pointer freeingAndreyL ProductEngine
2017-06-07MAINT-6697 More nullchecks for zip/unzip functionsAndreyL ProductEngine
2017-06-07MAINT-6697 Added a nullcheck to unzip_llsd()AndreyL ProductEngine
2016-10-28MAINT-6825 Fixing bad_alloc crashandreykproductengine
2015-11-10remove execute permission from many files that should not have itOz Linden
2014-06-16merge changes for 3.7.9-releaseOz Linden
2014-05-13sunshine-external merge WIPBrad Payne (Vir Linden)
2014-05-07merge changes for 3.7.7-releaseOz Linden
2014-03-19OPEN-199: replace the confusing STANDALONE switch with USESYSTEMLIBSOz Linden
2013-08-09second phase summer cleaningRichard Linden
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
2013-05-21mergeBrad Payne (Vir Linden)
2013-04-19merge changes for DRTVWR-294Oz Linden
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-03-13Large changes to the LLCurl::Responder API, as well as pulling in some ↵Don Kjer
changes to common libraries from the server codebase: * Additional error checking in http handlers. * Uniform log spam for http errors. * Switch to using constants for http heads and status codes. * Fixed bugs in incorrectly checking if parsing LLSD xml resulted in an error. * Reduced spam regarding LLSD parsing errors in the default completedRaw http handler. It should not longer be necessary to short-circuit completedRaw to avoid spam. * Ported over a few bug fixes from the server code. * Switch mode http status codes to use S32 instead of U32. * Ported LLSD::asStringRef from server code; avoids copying strings all over the place. * Ported server change to LLSD::asBinary; this always returns a reference now instead of copying the entire binary blob. * Ported server pretty notation format (and pretty binary format) to llsd serialization. * The new LLCurl::Responder API no longer has two error handlers to choose from. Overriding the following methods have been deprecated: ** error - use httpFailure ** errorWithContent - use httpFailure ** result - use httpSuccess ** completed - use httpCompleted ** completedHeader - no longer necessary; call getResponseHeaders() from a completion method to obtain these headers. * In order to 'catch' a completed http request, override one of these methods: ** httpSuccess - Called for any 2xx status code. ** httpFailure - Called for any non-2xx status code. ** httpComplete - Called for all status codes. Default implementation is to call either httpSuccess or httpFailure. * It is recommended to keep these methods protected/private in order to avoid triggering of these methods without using a 'push' method (see below). * Uniform error handling should followed whenever possible by calling a variant of this during httpFailure: ** llwarns << dumpResponse() << llendl; * Be sure to include LOG_CLASS(your_class_name) in your class in order for the log entry to give more context. * In order to 'push' a result into the responder, you should no longer call error, errorWithContent, result, or completed. * Nor should you directly call httpSuccess/Failure/Completed (unless passing a message up to a parent class). * Instead, you can set the internal content of a responder and trigger a corresponding method using the following methods: ** successResult - Sets results and calls httpSuccess ** failureResult - Sets results and calls httpFailure ** completedResult - Sets results and calls httpCompleted * To obtain information about a the response from a reponder method, use the following getters: ** getStatus - HTTP status code ** getReason - Reason string ** getContent - Content (Parsed body LLSD) ** getResponseHeaders - Response Headers (LLSD map) ** getHTTPMethod - HTTP method of the request ** getURL - URL of the request * It is still possible to override completeRaw if you want to manipulate data directly out of LLPumpIO. * See indra/llmessage/llcurl.h for more information.
2012-10-11Updating linux build to gcc4.6Don Kjer
2012-08-03Merge of viewer-development (3.4.1).Monty Brandenberg
2012-07-02Merge 3.3.3 release with Drano HTTP library at 3.3.0Monty Brandenberg
Big delta was converting the new texture debugger support code to the new library. Viewer manifest should probably get an eyeball before release.
2012-06-01Platform fixups Linux: unused variables, make error strings constant.Monty Brandenberg
2012-04-25Removing windows line endings from .h and .cpp files.Todd Stinson
2012-03-13pull and merge from viewer-developmentprep
2012-02-22Path-305: Added support for retrieving compressed navmeshes in a LLSD.prep
2012-02-01converted a bunch of narrowing implicit conversions to explicitRichard Linden
2011-08-18EXP-1107 FIX Crash in LLFastTimer::NamedTimer::accumulateTimingsRichard Nelson
2011-08-10added fast timers to profile inventory LLSD deserializationRichard Nelson
2011-05-25SH-1603 Replace every occurrence of "WTF" with something more appropriate.Dave Parks
2011-03-30SH-477 Better mesh streaming cost estimation.Dave Parks
2010-11-22CTS-320 SH-465 FIX use system zlib for standalone buildsNyx (Neal Orman)
pulling boroondas' changes to change our includes to use the system versions of zlib if doing a standalone build. Code changes are minimal, and appear to work correctly. Approved. - Nyx
2010-10-25CTS-320 (part 3 of 3) use system zlib for standaloneBoroondas Gupte
2010-10-25CTS-320 (part 2 of 3) use system zlib for standaloneBoroondas Gupte