Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MailMessage::read() chokes on "Content-disposition" #3650

Closed
lewandowski-a-j-gmail-com opened this issue Jun 29, 2022 · 5 comments · Fixed by #4396
Closed

MailMessage::read() chokes on "Content-disposition" #3650

lewandowski-a-j-gmail-com opened this issue Jun 29, 2022 · 5 comments · Fixed by #4396
Assignees

Comments

@lewandowski-a-j-gmail-com

I noticed that Net::MailMessage::read(std::istream&) is unable to parse a multipart message that contains
"Content-disposition:" section (as oposed to "Content-Disposition:" which is parsed correctly).

I'm not an expert on email-related RFCs, but

  1. one of the email web-clients that I use did send a message with the problematic capitalization
  2. this message was parsed correctly by two different webmail clients that I use (including Google's one)
  3. MailMessage::read() does not seem have problems when I change "Content-Type:" to "Content-type:"

A small example illustraitng the problem is in the attachment. To see the unexpected [incorrect?] behavior, simply
change "Content-Disposition:" to "Content-disposition:" in the raw_message string literal at the beggining of main().
The resulting new raw message string (obtained through Net::MailMessage::write()) does not have the section with "Content-disposition:" at all.

poco-email-parser_cpp.txt

@aleks-f
Copy link
Member

aleks-f commented Jun 29, 2022

should be case insensitive, RFC 2822 supersedes RFC 822

@aleks-f aleks-f added the bug label Jun 29, 2022
@aleks-f aleks-f added this to the Release 1.13.0 milestone Jun 29, 2022
@aleks-f aleks-f removed the bug label Jun 29, 2022
@aleks-f aleks-f removed this from the Release 1.13.0 milestone Jun 29, 2022
@aleks-f
Copy link
Member

aleks-f commented Jun 29, 2022

ok, I can reproduce the problem using your code, so disregard previous (deleted) comment. scheduling this for 1.13

@lewandowski-a-j-gmail-com
Copy link
Author

aleks-f added a commit that referenced this issue Jul 8, 2022
* Fix percent-encoded fragment modification in Poco::URI

Before this commit using Poco::URI class to parse specific URIs that had
percent-encoded fragment identifier resulted in the loss of information
concerning the way the fragment identifier was encoded. There could be the cases
when the  result of Poco::URI object serialization to string did not match the
original URI string Poco::URI object was created from.

In this commit we change the internal logic of fragment processing in Poco::URI,
so that the fragment is stored inside the class in raw form (the same way as
query string). The methods getFragment and setFragment work the old way (with
percent-decoded fragment values), new methods getRawFragment and setRawFragment
are added to get access to the original fragment representation.

* Remove SDK version from VS2022 test projects (#3607)

* Remaining changes for Windows on ARM64 support (#3608)

* Add ARM64 to Foundation

* Changed lib, and bin folders of ARM64 builds

* Updated buildwin.cmd

* Added missing closing </File> tags (#3610)

* feat(Platform): LoongArch support #3460

* fix(PollSet): default enable epoll on linux

* default disable new state on move

* fix(UDPHandler): data race #3613; clean up all Net tsan warnings

* ProGen vs170 projects with Win32,x64,ARM64 (#3612)

* fix(TCPServer): #1884 #1965

* fix(LogFile): LogFile_STD (LogFileImpl) fails to recover from getting out of space #2084

* Avoid clang 10 -Wimplicit-int-float-conversion warning/error when converting int into float (#2943)

Example of warning (error when using -Werror) we get with clang 10:

/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:444:14: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-int-float-conversion]
                if (from > std::numeric_limits<T>::max())
                         ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:332:4: note: in instantiation of function template specialization 'Poco::Dynamic::VarHolder::checkUpperLimitFloat<float, int>' requested here
                        checkUpperLimitFloat<F,T>(from);
                        ^
/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:2175:3: note: in instantiation of function template specialization 'Poco::Dynamic::VarHolder::convertToSmaller<float, int>' requested here
                convertToSmaller(_val, val);
                ^

* chore(ci): run ci on pull requests

* #2569: Added TIMESTAMP data type support on MySQL (#3471)

* Unit test for TIMESTAMP data type in MySQL.

* Added support for TIMESTAMP data type.

Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>

* MongoDB::Array: int --> size_t in get for consistency with size(), new helper functions to add elements to an array. (#3016)

* fix(CppUnit): enable_if disarm numeric notEqualsMessage

* fix(CppUnit): CppUnit notEqualsMessage causing compile errors #3615

* Syslog: Include Facility to Syslog Message (#3452)

* Fixed indentation

* Added Facility to Message in RemoteSyslogListener

* Net: make MessageHeader limits configurable (#3404)

* Add Message::getAll (#3104)

* chore(Message): fix formatting for #3104

* Output to stderr in Poco::WindowsConsoleChannel (#3058)

- Fixes #3056

* HTTPDigestCredentials added support for RFC7616 algorithms (#3026)

* chore(SHA2Engine): fix formatting for #3026

* Added support for SQLite transaction types using Session property (#3018)

* chore(SQLite): fix enum names case for #3018

* fix(HTTPResponse): Add 425 / HTTP_TOO_EARLY to HTTPResponse::HTTPStatus #3592

* fix(SQLite): windows build (global var does not link) #3018

* Added missing SocketProactor class to ProGen source (#3616)

* Added missing SocketProactor class to ProGen source

* ProGen'd VS2022 Net project

* chore(Net): regenerate VS 140,150,160 projects #3614

* Handle MariaDB JSON columns since they are stored as `longtext` (#3621)

* Also extract BLOBs when reading longtext columns as std::string

* Fix error message in unit test

* Added unit test to read longtext columns as std::string

* Use `tx_isolation` when connected to MariaDB regardless of version (#3622)

* Use `tx_isolation` when connected to MariaDB regardless of version

* Rename variable

* Handle MariaDB server info in the middle of the string

* Updated to PCRE version 8.45  (#3623)

* Add missing changes from zlib update

* Updated to PCRE version 8.45

Build on Win32 and Linux, RegularExpressionTest was successful

* Fix/tsan (#3617)

* fix(Foundation): tsan warnings fixes

* fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress

* fix(Util): tsan fixes

* fix(netSSL_OpenSSL): tsan fixes

* fix(Data): tsan warnings fixes

* feat(ci): add tsan job

* feat(ci): add tsan job, another attempt

* feat(ci): add tsan job, 3rd attempt

* fix(Foundation): tsan warnings fixes

* fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress

* fix(Util): tsan fixes

* fix(netSSL_OpenSSL): tsan fixes

* fix(Data): tsan warnings fixes

* feat(ci): add tsan job

* feat(ci): add tsan job, another attempt

* feat(ci): add tsan job, 3rd attempt

* fix(ResultMetadata): memory leak #3474

* feat(ci): disable ActiveDispatcher tests for tsan runs

* feat(ci): try to fix tsan options file detection (again)

* chore(TestLibrary: correct spelling

* fix(ci): fix tsan run; add -y to apt; disable samples build for some jobs

* fix(ci): add mysql ports

* feat(ci): add VS asan

* feat(double-conversion): Upgrade double-conversion to v3.2.0 #3624

* chore(asan): disable msvc asan build (dll not found)

* chore(double-conversion): move NumericString.h before double-conversion includes to prevent min/max collision; reinstate lost loongarch64

* chore(JSON): sync pdjson with upstream

* fix(Statement): Poco::Data::Statement becomes unusable after exception #2287

* added facility to SyslogChannel (#3453)

* TCPServerDispatcher.h: missing <atomic> (#2961)

Fixes: b8af168
Fixes: #1965

* Windows embedded OpenSSL: Fixed bogus warning during compilation (External OpenSSL defined but internal headers used - possible mismatch!) (#3627)

* fix(double-conversion): nios2 and riscv defines

* fix(double-conversion): riscv defines

* fix(cmake): TestLibrary debug postfix

* fix(cmake): add WebNotifier to samples #3184

* doc(Crypto): Fix error in find_package example #3088

* fix(Event): Event data race #3629

* fix(AsyncChannel): race condition in AsyncChannel close/log #1039

* fix(Zip): Zip 64-bit extensions not set #2590 (tentative) (#3604)

* PocoDoc: fix handling of font-style tags if tag is immediately followed by punctuation

* Static code analyzer warnings #2688

* MinGW: fatal error: kernelspecs.h: No such file #2691

* Poco::Data::SessionPool change connection timeout #3241

* Makefile: space(s) following target name will break build (during link) #3062

* json format PrintHandler #2678

* indicate compiler that functions will never return (#3639)

* fix warning C4717: 'format<std::vector<std::any,std::allocatorstd::an… (#3640)

* fix warning C4717: 'format<std::vector<std::any,std::allocatorstd::any > >': recursive on all control paths, function will cause runtime stack overflow

* keep origin format.

* fix(format): scope

* fix(Crypto): libPocoCrypto.so: undefined reference to pthread_atfork when linking statically with OpenSSL 1.1 #3073

* chore(LocalConfigurationView): fix style #3529

* fix(ConfigurationView): ConfigurationView and JSON is broken for array access #3635

* FifoBuffer.advance method not throw exception when length==0 (#3641)

* fifobuffer not throw error when length = 0

* Update FIFOBuffer.h

fix indentation

Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* fix(URI): Decoding URI query parameters ( ::getQueryParameters) incompatible with Spring 5 #2619

* fix(NTPClient): NTPClient ignores second fractions #2614

* chore(JSON): add test for #2612

* fix(Platform): MinGW also defines __GNUC__. #3195

* Fix some clang 10 -Wsign-compare warnings (#2960)

In file included from /data/mwrep/res/osp/Poco/JSON/20-0-0-0/include/Poco/JSON/Object.h:22:
In file included from /data/mwrep/res/osp/Poco/JSON/20-0-0-0/include/Poco/JSON/Array.h:23:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/Dynamic/Var.h:26:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/Dynamic/VarHolder.h:22:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumberFormatter.h:22:
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:220:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:229:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:240:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:249:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
4 errors generated.

* chore(README): Add vcpkg installation instructions #2940

* fix(SQLite): SQLite::Connector::open() crashes on db file with non existing directory #2285

* fix(MailMessage): read hangs on missing final multipart boundary #2401

* fix(NumberParser): Rounds very large negative numbers to the incorrect values #3580

* fix(JSON::Stringifier): JSON Serializing NAN #3251

* feat(Timespan): Add std::chrono support #2576 #2623

* fix(strToInt): overflows #3580

* fix(strToInt): thousand separator regression #3580

* fix(MySQL::Extractor): MySQL Extractor #2521

* feat(FTPClientSession): activeDataConnection 1.11.0 cannot set specific data port #3372

* feat(Cipher): No access to padding in Cipher #3374

* feat(TypeHandler): DB into() does not compile for more than 20 members in a tuple #3342

* fix(NumberFormatter): Negative precision in NumberFormatter::format() #2511

* Make ParallelSocketReactor thread namable (#3642)

make ParallelSocketReactor thread namable

* fix(Redis): Poco::Redis after executing auth command next command always return OK #2457

* chore(NumberParserTest): add test for #2441

* avoid clang tidy warning (#3646)

* Revert "avoid clang tidy warning (#3646)" (#3648)

This reverts commit b23488d.

* fix(VarHolder): limits check

* As of C++11, std::swap is noexcept. #2386 (#3645)

* As of C++11, std::swap is noexcept. #2386

* fix(Any): remove throw on swap

* fix(Any): As of C++11, std::swap is noexcept. #2386

* fix(Any): make size const #2386

* fix(SimpleRowFormatter): clang won't compile noexcept #2386

* a couple of arm fixes

* fix(Any): As of C++11, std::swap is noexcept. #2386

* fix(AnyTest): local() for POCO_NO_SOO# 2386

* test(RSACipher): RSA encryption without private key #2367

* chore(RSACipherTest): delete ciphers #2367

* add separate accessors and mutators for connect, send and receive tim… (#3476)

* add separate accessors and mutators for connect, send and receive timeouts

* implement timeout methods outside of class declaration to conform to existing code structure

* Update HTTPSession.h

Co-authored-by: bfoster <bfoster@malwarebytes.com>
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* Make poll set interruptable (#3644)

* Make poll set interruptable

* open test for poll set

* fix poll set wake up test

* fix build error

* feat(SecureSocketImpl): how to set the socket of SecureSocketImpl to no-blocking? #2352

* better socket reactor wake up (#3647)

* better socket reactor wake up

* Remove documentation comment from source file

Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* test(MailMesage): MailMessage::read() chokes on Content-disposition #3650

* chore(Net/samples): tcpserver missing from Net/samples/CMakeLists.txt #3651

* fix(CMake): Linking with Foundation on Android gives error #3652 #3653

* #2821: Poco::Buffer: full on creation? - add documentation describing the behavior.

* add note regarding receiveFrame with Poco::Buffer

* merge changes from 1.11.3

* #3633: Redis: Support Authentication

* #3658: Support for chunked transfer encoding trailer

* formatHex with lower case (#3657)

* feat(Socket): add lastErrorDesc()

* fix(Socket): Socket::select EPOLL implementation returns socket in exceptList when empty list is given #3655; mark select as deprecated #1459

* Fix/poll set race (#3630)

* fix(PollSet): PollSet data race #3628

* fix(SocketConnector): SocketConnector test #2875

* fix(PollSet): optimize the amount of locked code; fix and simplify wakeUp logic

* fix(SocketConnectorTest): fix test memleak (data not flowing, handlers not deleted) #2875

* fix(PollSet): clear() and tests

* fix(PollSet): #1459 #3628 #3655 #3661

* fix(PollSet): Integrate windows epoll #2091, #3649

* chore(ProGen): MSVC does not properly recognize std version #3665

* fix(PollSet): eventfd call arg; add wepoll to CMakelists.txt

* fix(PollSet): CMakelists.txt

* fix(cmake): MSVC does not properly recognize std version #3665

* chore(vscode): add mac config

* fix(PollSet): PollSet::add()/update() semantics #3661

* Feat/pcre2 (#3663)

* upgrade to pcre2

* use pcre2_*_8 names

* fix pcre2 lib name for unbundled build

* CMake changes for PCRE2

* add missing macro for unbundled build

* add PCRE2_STATIC

* updated VS project files for pcre2

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>

* Revert "formatHex with lower case (#3657)" (#3670)

This reverts commit b1823b6.

* Always set thread names on POSIX platforms (#3384)

* chore: gitignore vim .swp files

* feat(POSIX): Always set thread names.

I'm not sure about the original intent to hide it under a DEBUG macro.

Naming the threads in release mode makes it easier to see runtime
application and know which thread pool uses how many threads and what
their names are. Firefox, Chromium and many other apps do this on Linux.

* Remove trailing whitespace (#3668)

* doc: update CHANGLEOG

Co-authored-by: Daniil Zotkin <zotkin@rutoken.ru>
Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com>
Co-authored-by: Romain Geissler @ Amadeus <romain.geissler@amadeus.com>
Co-authored-by: hectots <monkey.instinct@gmail.com>
Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>
Co-authored-by: Matej Kenda <matejken@gmail.com>
Co-authored-by: BeBinder <93721965+BeBinder@users.noreply.github.com>
Co-authored-by: Tavi Cacina <tavi-cacina@users.noreply.github.com>
Co-authored-by: Mathieu Stefani <m.stefani@abc-arbitrage.com>
Co-authored-by: Fritz Elfert <fritz@fritz-elfert.de>
Co-authored-by: Maksim Kita <kitaetoya@gmail.com>
Co-authored-by: Spaky <Spaky@users.noreply.github.com>
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
Co-authored-by: Matej Kenda <matej.kenda@topit.si>
Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Guillermo Frontera <gfrontera86@gmail.com>
Co-authored-by: junwufan <shelllet.com@gmail.com>
Co-authored-by: JackyWoo <wuchienchao@qq.com>
Co-authored-by: Ben Foster <bfoster7593@gmail.com>
Co-authored-by: bfoster <bfoster@malwarebytes.com>
Co-authored-by: Arun Chandrasekaran <arun@paravision.ai>
Co-authored-by: John Vandenberg <jayvdb@gmail.com>
aleks-f added a commit that referenced this issue Jul 8, 2022
* updated README.md

* Create close-inactive-issues.yml

* PocoDoc: fix iframe sandboxing

* create poco-1.11.3 branch, bump version

* update copyright date

* #3567: check legacy provider existence for legacy exception #3567

* fix(OpenSSLInitializer): unload provider on uninitialize (#3567)

* fix(OpenSSLInitializer): fix provider unloading (#3567)

* fix(OpenSSLInitializer): revert unload provider on uninitialize (#3567)

* fix(MySQL): MySQL UUID binding temporary string #3587

* update CI link in README.md

* #3632: add overloads to ctor and connect() to allow passing a Poco::Net::StreamSocket/Poco::Net::SecureStreamSocket to enable TLS connections without introduding a direct dependency to NetSSL.

* updated changelog

* devel-release-1.12.0 (#3673)

* Fix percent-encoded fragment modification in Poco::URI

Before this commit using Poco::URI class to parse specific URIs that had
percent-encoded fragment identifier resulted in the loss of information
concerning the way the fragment identifier was encoded. There could be the cases
when the  result of Poco::URI object serialization to string did not match the
original URI string Poco::URI object was created from.

In this commit we change the internal logic of fragment processing in Poco::URI,
so that the fragment is stored inside the class in raw form (the same way as
query string). The methods getFragment and setFragment work the old way (with
percent-decoded fragment values), new methods getRawFragment and setRawFragment
are added to get access to the original fragment representation.

* Remove SDK version from VS2022 test projects (#3607)

* Remaining changes for Windows on ARM64 support (#3608)

* Add ARM64 to Foundation

* Changed lib, and bin folders of ARM64 builds

* Updated buildwin.cmd

* Added missing closing </File> tags (#3610)

* feat(Platform): LoongArch support #3460

* fix(PollSet): default enable epoll on linux

* default disable new state on move

* fix(UDPHandler): data race #3613; clean up all Net tsan warnings

* ProGen vs170 projects with Win32,x64,ARM64 (#3612)

* fix(TCPServer): #1884 #1965

* fix(LogFile): LogFile_STD (LogFileImpl) fails to recover from getting out of space #2084

* Avoid clang 10 -Wimplicit-int-float-conversion warning/error when converting int into float (#2943)

Example of warning (error when using -Werror) we get with clang 10:

/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:444:14: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-int-float-conversion]
                if (from > std::numeric_limits<T>::max())
                         ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:332:4: note: in instantiation of function template specialization 'Poco::Dynamic::VarHolder::checkUpperLimitFloat<float, int>' requested here
                        checkUpperLimitFloat<F,T>(from);
                        ^
/remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:2175:3: note: in instantiation of function template specialization 'Poco::Dynamic::VarHolder::convertToSmaller<float, int>' requested here
                convertToSmaller(_val, val);
                ^

* chore(ci): run ci on pull requests

* #2569: Added TIMESTAMP data type support on MySQL (#3471)

* Unit test for TIMESTAMP data type in MySQL.

* Added support for TIMESTAMP data type.

Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>

* MongoDB::Array: int --> size_t in get for consistency with size(), new helper functions to add elements to an array. (#3016)

* fix(CppUnit): enable_if disarm numeric notEqualsMessage

* fix(CppUnit): CppUnit notEqualsMessage causing compile errors #3615

* Syslog: Include Facility to Syslog Message (#3452)

* Fixed indentation

* Added Facility to Message in RemoteSyslogListener

* Net: make MessageHeader limits configurable (#3404)

* Add Message::getAll (#3104)

* chore(Message): fix formatting for #3104

* Output to stderr in Poco::WindowsConsoleChannel (#3058)

- Fixes #3056

* HTTPDigestCredentials added support for RFC7616 algorithms (#3026)

* chore(SHA2Engine): fix formatting for #3026

* Added support for SQLite transaction types using Session property (#3018)

* chore(SQLite): fix enum names case for #3018

* fix(HTTPResponse): Add 425 / HTTP_TOO_EARLY to HTTPResponse::HTTPStatus #3592

* fix(SQLite): windows build (global var does not link) #3018

* Added missing SocketProactor class to ProGen source (#3616)

* Added missing SocketProactor class to ProGen source

* ProGen'd VS2022 Net project

* chore(Net): regenerate VS 140,150,160 projects #3614

* Handle MariaDB JSON columns since they are stored as `longtext` (#3621)

* Also extract BLOBs when reading longtext columns as std::string

* Fix error message in unit test

* Added unit test to read longtext columns as std::string

* Use `tx_isolation` when connected to MariaDB regardless of version (#3622)

* Use `tx_isolation` when connected to MariaDB regardless of version

* Rename variable

* Handle MariaDB server info in the middle of the string

* Updated to PCRE version 8.45  (#3623)

* Add missing changes from zlib update

* Updated to PCRE version 8.45

Build on Win32 and Linux, RegularExpressionTest was successful

* Fix/tsan (#3617)

* fix(Foundation): tsan warnings fixes

* fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress

* fix(Util): tsan fixes

* fix(netSSL_OpenSSL): tsan fixes

* fix(Data): tsan warnings fixes

* feat(ci): add tsan job

* feat(ci): add tsan job, another attempt

* feat(ci): add tsan job, 3rd attempt

* fix(Foundation): tsan warnings fixes

* fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress

* fix(Util): tsan fixes

* fix(netSSL_OpenSSL): tsan fixes

* fix(Data): tsan warnings fixes

* feat(ci): add tsan job

* feat(ci): add tsan job, another attempt

* feat(ci): add tsan job, 3rd attempt

* fix(ResultMetadata): memory leak #3474

* feat(ci): disable ActiveDispatcher tests for tsan runs

* feat(ci): try to fix tsan options file detection (again)

* chore(TestLibrary: correct spelling

* fix(ci): fix tsan run; add -y to apt; disable samples build for some jobs

* fix(ci): add mysql ports

* feat(ci): add VS asan

* feat(double-conversion): Upgrade double-conversion to v3.2.0 #3624

* chore(asan): disable msvc asan build (dll not found)

* chore(double-conversion): move NumericString.h before double-conversion includes to prevent min/max collision; reinstate lost loongarch64

* chore(JSON): sync pdjson with upstream

* fix(Statement): Poco::Data::Statement becomes unusable after exception #2287

* added facility to SyslogChannel (#3453)

* TCPServerDispatcher.h: missing <atomic> (#2961)

Fixes: b8af168
Fixes: #1965

* Windows embedded OpenSSL: Fixed bogus warning during compilation (External OpenSSL defined but internal headers used - possible mismatch!) (#3627)

* fix(double-conversion): nios2 and riscv defines

* fix(double-conversion): riscv defines

* fix(cmake): TestLibrary debug postfix

* fix(cmake): add WebNotifier to samples #3184

* doc(Crypto): Fix error in find_package example #3088

* fix(Event): Event data race #3629

* fix(AsyncChannel): race condition in AsyncChannel close/log #1039

* fix(Zip): Zip 64-bit extensions not set #2590 (tentative) (#3604)

* PocoDoc: fix handling of font-style tags if tag is immediately followed by punctuation

* Static code analyzer warnings #2688

* MinGW: fatal error: kernelspecs.h: No such file #2691

* Poco::Data::SessionPool change connection timeout #3241

* Makefile: space(s) following target name will break build (during link) #3062

* json format PrintHandler #2678

* indicate compiler that functions will never return (#3639)

* fix warning C4717: 'format<std::vector<std::any,std::allocatorstd::an… (#3640)

* fix warning C4717: 'format<std::vector<std::any,std::allocatorstd::any > >': recursive on all control paths, function will cause runtime stack overflow

* keep origin format.

* fix(format): scope

* fix(Crypto): libPocoCrypto.so: undefined reference to pthread_atfork when linking statically with OpenSSL 1.1 #3073

* chore(LocalConfigurationView): fix style #3529

* fix(ConfigurationView): ConfigurationView and JSON is broken for array access #3635

* FifoBuffer.advance method not throw exception when length==0 (#3641)

* fifobuffer not throw error when length = 0

* Update FIFOBuffer.h

fix indentation

Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* fix(URI): Decoding URI query parameters ( ::getQueryParameters) incompatible with Spring 5 #2619

* fix(NTPClient): NTPClient ignores second fractions #2614

* chore(JSON): add test for #2612

* fix(Platform): MinGW also defines __GNUC__. #3195

* Fix some clang 10 -Wsign-compare warnings (#2960)

In file included from /data/mwrep/res/osp/Poco/JSON/20-0-0-0/include/Poco/JSON/Object.h:22:
In file included from /data/mwrep/res/osp/Poco/JSON/20-0-0-0/include/Poco/JSON/Array.h:23:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/Dynamic/Var.h:26:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/Dynamic/VarHolder.h:22:
In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumberFormatter.h:22:
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:220:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:229:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:240:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
/data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:249:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare]
                                if ((limitCheck - result) < add) return false;
                                     ~~~~~~~~~~~~~~~~~~~  ^ ~~~
4 errors generated.

* chore(README): Add vcpkg installation instructions #2940

* fix(SQLite): SQLite::Connector::open() crashes on db file with non existing directory #2285

* fix(MailMessage): read hangs on missing final multipart boundary #2401

* fix(NumberParser): Rounds very large negative numbers to the incorrect values #3580

* fix(JSON::Stringifier): JSON Serializing NAN #3251

* feat(Timespan): Add std::chrono support #2576 #2623

* fix(strToInt): overflows #3580

* fix(strToInt): thousand separator regression #3580

* fix(MySQL::Extractor): MySQL Extractor #2521

* feat(FTPClientSession): activeDataConnection 1.11.0 cannot set specific data port #3372

* feat(Cipher): No access to padding in Cipher #3374

* feat(TypeHandler): DB into() does not compile for more than 20 members in a tuple #3342

* fix(NumberFormatter): Negative precision in NumberFormatter::format() #2511

* Make ParallelSocketReactor thread namable (#3642)

make ParallelSocketReactor thread namable

* fix(Redis): Poco::Redis after executing auth command next command always return OK #2457

* chore(NumberParserTest): add test for #2441

* avoid clang tidy warning (#3646)

* Revert "avoid clang tidy warning (#3646)" (#3648)

This reverts commit b23488d.

* fix(VarHolder): limits check

* As of C++11, std::swap is noexcept. #2386 (#3645)

* As of C++11, std::swap is noexcept. #2386

* fix(Any): remove throw on swap

* fix(Any): As of C++11, std::swap is noexcept. #2386

* fix(Any): make size const #2386

* fix(SimpleRowFormatter): clang won't compile noexcept #2386

* a couple of arm fixes

* fix(Any): As of C++11, std::swap is noexcept. #2386

* fix(AnyTest): local() for POCO_NO_SOO# 2386

* test(RSACipher): RSA encryption without private key #2367

* chore(RSACipherTest): delete ciphers #2367

* add separate accessors and mutators for connect, send and receive tim… (#3476)

* add separate accessors and mutators for connect, send and receive timeouts

* implement timeout methods outside of class declaration to conform to existing code structure

* Update HTTPSession.h

Co-authored-by: bfoster <bfoster@malwarebytes.com>
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* Make poll set interruptable (#3644)

* Make poll set interruptable

* open test for poll set

* fix poll set wake up test

* fix build error

* feat(SecureSocketImpl): how to set the socket of SecureSocketImpl to no-blocking? #2352

* better socket reactor wake up (#3647)

* better socket reactor wake up

* Remove documentation comment from source file

Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>

* test(MailMesage): MailMessage::read() chokes on Content-disposition #3650

* chore(Net/samples): tcpserver missing from Net/samples/CMakeLists.txt #3651

* fix(CMake): Linking with Foundation on Android gives error #3652 #3653

* #2821: Poco::Buffer: full on creation? - add documentation describing the behavior.

* add note regarding receiveFrame with Poco::Buffer

* merge changes from 1.11.3

* #3633: Redis: Support Authentication

* #3658: Support for chunked transfer encoding trailer

* formatHex with lower case (#3657)

* feat(Socket): add lastErrorDesc()

* fix(Socket): Socket::select EPOLL implementation returns socket in exceptList when empty list is given #3655; mark select as deprecated #1459

* Fix/poll set race (#3630)

* fix(PollSet): PollSet data race #3628

* fix(SocketConnector): SocketConnector test #2875

* fix(PollSet): optimize the amount of locked code; fix and simplify wakeUp logic

* fix(SocketConnectorTest): fix test memleak (data not flowing, handlers not deleted) #2875

* fix(PollSet): clear() and tests

* fix(PollSet): #1459 #3628 #3655 #3661

* fix(PollSet): Integrate windows epoll #2091, #3649

* chore(ProGen): MSVC does not properly recognize std version #3665

* fix(PollSet): eventfd call arg; add wepoll to CMakelists.txt

* fix(PollSet): CMakelists.txt

* fix(cmake): MSVC does not properly recognize std version #3665

* chore(vscode): add mac config

* fix(PollSet): PollSet::add()/update() semantics #3661

* Feat/pcre2 (#3663)

* upgrade to pcre2

* use pcre2_*_8 names

* fix pcre2 lib name for unbundled build

* CMake changes for PCRE2

* add missing macro for unbundled build

* add PCRE2_STATIC

* updated VS project files for pcre2

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>

* Revert "formatHex with lower case (#3657)" (#3670)

This reverts commit b1823b6.

* Always set thread names on POSIX platforms (#3384)

* chore: gitignore vim .swp files

* feat(POSIX): Always set thread names.

I'm not sure about the original intent to hide it under a DEBUG macro.

Naming the threads in release mode makes it easier to see runtime
application and know which thread pool uses how many threads and what
their names are. Firefox, Chromium and many other apps do this on Linux.

* Remove trailing whitespace (#3668)

* doc: update CHANGLEOG

Co-authored-by: Daniil Zotkin <zotkin@rutoken.ru>
Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com>
Co-authored-by: Romain Geissler @ Amadeus <romain.geissler@amadeus.com>
Co-authored-by: hectots <monkey.instinct@gmail.com>
Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>
Co-authored-by: Matej Kenda <matejken@gmail.com>
Co-authored-by: BeBinder <93721965+BeBinder@users.noreply.github.com>
Co-authored-by: Tavi Cacina <tavi-cacina@users.noreply.github.com>
Co-authored-by: Mathieu Stefani <m.stefani@abc-arbitrage.com>
Co-authored-by: Fritz Elfert <fritz@fritz-elfert.de>
Co-authored-by: Maksim Kita <kitaetoya@gmail.com>
Co-authored-by: Spaky <Spaky@users.noreply.github.com>
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
Co-authored-by: Matej Kenda <matej.kenda@topit.si>
Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Guillermo Frontera <gfrontera86@gmail.com>
Co-authored-by: junwufan <shelllet.com@gmail.com>
Co-authored-by: JackyWoo <wuchienchao@qq.com>
Co-authored-by: Ben Foster <bfoster7593@gmail.com>
Co-authored-by: bfoster <bfoster@malwarebytes.com>
Co-authored-by: Arun Chandrasekaran <arun@paravision.ai>
Co-authored-by: John Vandenberg <jayvdb@gmail.com>

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Daniil Zotkin <zotkin@rutoken.ru>
Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com>
Co-authored-by: Romain Geissler @ Amadeus <romain.geissler@amadeus.com>
Co-authored-by: hectots <monkey.instinct@gmail.com>
Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com>
Co-authored-by: Matej Kenda <matejken@gmail.com>
Co-authored-by: BeBinder <93721965+BeBinder@users.noreply.github.com>
Co-authored-by: Tavi Cacina <tavi-cacina@users.noreply.github.com>
Co-authored-by: Mathieu Stefani <m.stefani@abc-arbitrage.com>
Co-authored-by: Fritz Elfert <fritz@fritz-elfert.de>
Co-authored-by: Maksim Kita <kitaetoya@gmail.com>
Co-authored-by: Spaky <Spaky@users.noreply.github.com>
Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com>
Co-authored-by: Matej Kenda <matej.kenda@topit.si>
Co-authored-by: Guillermo Frontera <gfrontera86@gmail.com>
Co-authored-by: junwufan <shelllet.com@gmail.com>
Co-authored-by: JackyWoo <wuchienchao@qq.com>
Co-authored-by: Ben Foster <bfoster7593@gmail.com>
Co-authored-by: bfoster <bfoster@malwarebytes.com>
Co-authored-by: Arun Chandrasekaran <arun@paravision.ai>
Co-authored-by: John Vandenberg <jayvdb@gmail.com>
@github-actions
Copy link

This issue is stale because it has been open for 365 days with no activity.

@github-actions github-actions bot added the stale label Jun 30, 2023
@github-actions
Copy link

This issue was closed because it has been inactive for 60 days since being marked as stale.

@aleks-f aleks-f closed this as completed Feb 5, 2024
aleks-f added a commit that referenced this issue Feb 6, 2024
* doc(ReleaseNotes): fix formatting, add PR links

* Incorporated Debian patches (#4380)

* Debian: Use null as device file as console might not be there

* Debian: Add GNU Hurd support

* Debian: Includes not available on Hurd

* Debian: Disable SHA2 test on platforms where it's broken

* Debian: Set POCO_NO_FPENVIRONMENT for armel

---------

Co-authored-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>

* fix(UUID): UUID parser silently ignores too long strings #4375 (#4384)

* fix(Crypto): EVP_CIPHER_CTX_init is incorrectly defined in Envelope.cpp if it is not defined already by OpenSSL. Fixed to properly use EVP_CIPHER_CTX_reset.

* enh(ci): Add macos sanitizers job (#4313)

* enh(ci): macOS thread sanitizer

* enh(ci): macOS sanitize jobs for undefined and address.

* fix(test): lock std:cerr to prevent data race in TCP server tests (reported by clang thread sanitizer) #4313

* fix(test): Use 96-bit IV with aes-256-gcm to fix (#4347):

I/O error: error:1C800066:Provider routines::cipher operation failed

* mingw compile and link improvements (#4019) (#4391)

* fix(platform): MinGW Compile and link errors: undefined reference to `WinMain'

* fix(platform): MinGW compile UUID tests (conflicting UUID defined as GUID in rpcdce.h via windows.h)

* enh(DateTimeParser): option to cleanup input string before parsing (#569).

* fix(CppUnit): do not install #4398

* fix(DataTest): do not install #4398

* chore(SingleSocketPoller): spelling

* fix(MailMessage): Compare lowercase content disposition headers when reading parts (#3650).

* chore(cmake): CppUnit Foundation dependency documentation; fix indentation

* fix(SocketReactorTest): deadlock test intermittently hangs #4400

* gcc/clang (-fvisibility=hidden): corrections to compile and work properly (#4394)

* fix(ActiveRecord): missing ActiveRecordLib_API definitions for clang/gcc.

* fix(FPEnvironment): export FPEnvironmentImpl classes (#4393, #3331)

* fix(Crypto): export *Impl classes used from inlines (#4393, #3331)

* fix(Dynamic): explicitly instantiate and export Dynamic::Struct for string and int (-fvisibility=hidden) (#4393, #3331)

* fix(JSON): explicitly instantiate and export SharedPtr for JSON::Array and JSON::Object (-fvisibility=hidden) (#4393, #3331)

* enh(CMake): Set symbol visibility to hidden (#4393, #3331)

* enh(configure): user c++17 standard for iphone, Darwin and ARM-Linux.

* fix(UTF): explicitly instantiate and export 16 and 32-bit strings (-fvisibility=hidden) (#4393, #3331)

* fix(RecordSet): make Extraction.h internal and instantiate RecordsSet::column template functions only for supported types. (-fvisibility=hidden) (#4393, #3331)

* fix(UTF): fix explicitly instantiation on Windows (-fvisibility=hidden) (#4393, #3331)

* enh(CMake): Add github jobs for macOS with visibility set to hidden (#4393, #3331)

* fix(CppParser): Add missing declarations for CppParser_API (#4393, #3331)

* enh(CMake): Enable more options in github jobs for macOS with visibility set to hidden (#4393, #3331)

* fix(MongoDB): Add missing MongoDB_API (#4393, #3331)

* Implemented automated network library initialization for Windows MinGW targets (#4402)

* Implemented automated network library initialization for Windows MinGW/GCC targets

* Using POCO_COMPILER_MINGW instead of __GNUC__

---------

Co-authored-by: Jesse Hoogervorst <jesse@deltaxlab.com>

* fix(Thread_POSIX): qnx build error: 'prctl' was not declared in this scope #4404

* fix: NULL pointer strategy when setting rotation never #4411

Regression from 66e93f9.

* fix(progen): add LanguageStandard (stdcpp17, stdc11); regenerate vs170 projects

* Implement GetAdaptersAddresses API (#4419)

* Upgrade from GetAdaptersInfo to GetAdaptersAddresses API. The code has been swapped back to a buffer of bytes because the data structure built by GetAdaptersAddresses is a linked list and the returned size is not a multiple of the IP_ADAPTERS_ADDRESSES struct.

* Adding back Poco/UnWindows.h

* Undoing indents.

* test(ThreadPool): unit test for thread pool shutdown when no worker is running. (#2450)

* enh: #4216: use std::string literals

* enh: #3890: Get rid of SingletonHolder

* enh(File): Linux, macOS: microsecond precision for file times (create and modification time).

* enh(tests): Ability to enable/disable testing of deprecated functionality. (#4425)

* fix(SSLManager): Fixed regression introduced in PR #4103, fixes #4421

* fix(LogFile): Unify flushing behaviour of WIN32 and STD implementation (#2443)

* chore(buildwin): remove old vs versions from build and progen scripts; update documentation

* chore(buildwin): remove leftover closing curly

* enh(SQLite): SQLite FTS5 #4367

* Release 1.13.1: Update release notes, changelog, contributors, version files. (#4440)

* Update CONTRIBUTORS

* fix(CppParser): Documentation generation (some minor fixes, WiP) #4441

* feat(CppParser): C++11 attributes support

* feat(PocoDoc): C++11 attributes support

* chore(doc): Changelog and release notes formatting

* fix(CppParser): parsing of function template parameters and namespace imports

* fix: make headers parseable by CppParser/PocoDoc

* fix(PocoDoc): add -DPOCO_DOC

* fix(PocoDoc): postgres headers not found

* fix(PocoDoc): libpq include path

* fix(XML): #4443: Upgrade libexpat to 2.6.0

* doc: updated changelog

---------

Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com>
Co-authored-by: Matej Kenda <matejken@gmail.com>
Co-authored-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Co-authored-by: Jesse Hoogervorst <hoogervorstjesse@gmail.com>
Co-authored-by: Jesse Hoogervorst <jesse@deltaxlab.com>
Co-authored-by: Aron Budea <aron.budea@collabora.com>
Co-authored-by: Andrew Auclair <andrewauclair@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

3 participants