Package: presage Followup-For: Bug #984297 User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu kinetic ubuntu-patch X-Debbugs-Cc: scho...@ubuntu.com Control: tags -1 patch
In Ubuntu, the attached patch was applied to achieve the following: * d/p/c++17.patch: fix the build against GCC-11 by porting the code to C++17 (LP: #1988196) * d/p/format-security.patch: fix insecure format strings in the demo code (FTBFS on Ubuntu due to -Werror=format-security.patch) I'm not sure that the second one actually applies in Debian, but attaching the patch in the debdiff just in case. Thanks for considering the patch. -- System Information: Debian Release: bookworm/sid APT prefers jammy-updates APT policy: (500, 'jammy-updates'), (500, 'jammy-security'), (500, 'jammy'), (100, 'jammy-backports'), (50, 'jammy-proposed') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.15.0-46-lowlatency (SMP w/8 CPU threads; PREEMPT) Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_USER, TAINT_OOT_MODULE Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled
diff -Nru presage-0.9.1/debian/patches/c++17.patch presage-0.9.1/debian/patches/c++17.patch --- presage-0.9.1/debian/patches/c++17.patch 1970-01-01 01:00:00.000000000 +0100 +++ presage-0.9.1/debian/patches/c++17.patch 2022-08-30 17:56:09.000000000 +0200 @@ -0,0 +1,239 @@ +Description: Port the code to C++17 +Author: Simon Chopin <scho...@ubuntu.com> +Origin: ubuntu +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=984297 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/presage/+bug/1988196 +Last-Update: 2022-08-30 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/src/lib/presage.h ++++ b/src/lib/presage.h +@@ -112,7 +112,7 @@ + * + * Presage does not take ownership of the callback object. + */ +- Presage(PresageCallback* callback) throw (PresageException); ++ Presage(PresageCallback* callback) noexcept(false); + + + /** Creates and initializes presage with supplied configuration. +@@ -122,7 +122,7 @@ + * + * Presage does not take ownership of the callback object. + */ +- Presage(PresageCallback* callback, const std::string config) throw (PresageException); ++ Presage(PresageCallback* callback, const std::string config) noexcept(false); + + + /** Destroys presage. +@@ -138,7 +138,7 @@ + * context. + * + */ +- std::vector<std::string> predict() throw (PresageException); ++ std::vector<std::string> predict() noexcept(false); + + /** \brief Obtain a prediction that matches the supplied token + * filter. +@@ -153,7 +153,7 @@ + * of the filter tokens. + * + */ +- std::multimap<double, std::string> predict(std::vector<std::string> filter) throw (PresageException); ++ std::multimap<double, std::string> predict(std::vector<std::string> filter) noexcept(false); + + /** \brief Learn from text offline. + * +@@ -167,7 +167,7 @@ + * \param text a text string to learn from. + * + */ +- void learn(const std::string text) const throw (PresageException); ++ void learn(const std::string text) const noexcept(false); + + /** \brief Callback getter/setter. + * +@@ -176,7 +176,7 @@ + * + * \return pointer to previously used callback + */ +- PresageCallback* callback(PresageCallback* callback) throw (PresageException); ++ PresageCallback* callback(PresageCallback* callback) noexcept(false); + + /** \brief Request presage to return the completion string for the given predicted token. + * +@@ -190,26 +190,26 @@ + * + * \return completion string + */ +- std::string completion(std::string str) throw (PresageException); ++ std::string completion(std::string str) noexcept(false); + + /** \brief Returns the text entered so far. + * + * \return context, text entered so far. + */ +- std::string context() const throw (PresageException); ++ std::string context() const noexcept(false); + + /** \brief Returns true if a context change occured. + * + * \return true if a context change occured after the last update + * or predict calls, or false otherwise. + */ +- bool context_change() const throw (PresageException); ++ bool context_change() const noexcept(false); + + /** \brief Returns the current prefix. + * + * \return prefix + */ +- std::string prefix() const throw (PresageException); ++ std::string prefix() const noexcept(false); + + /** \brief Gets the value of specified configuration variable. + * +@@ -218,7 +218,7 @@ + * + * \return value assigned to configuration variable. + */ +- std::string config(const std::string variable) const throw (PresageException); ++ std::string config(const std::string variable) const noexcept(false); + + /** \brief Sets the value of specified configuration variable. + * +@@ -227,7 +227,7 @@ + * from the configuration file in use. + * + */ +- void config(const std::string variable, const std::string value) const throw (PresageException); ++ void config(const std::string variable, const std::string value) const noexcept(false); + + /** \brief Save current configuration to file. + * +@@ -236,7 +236,7 @@ + * active XML profile. + * + */ +- void save_config() const throw (PresageException); ++ void save_config() const noexcept(false); + + /* + * Presage public API ends here +--- a/src/lib/presage.cpp ++++ b/src/lib/presage.cpp +@@ -31,7 +31,7 @@ + #include "core/predictorActivator.h" + + Presage::Presage (PresageCallback* callback) +- throw (PresageException) ++ noexcept(false) + { + profileManager = new ProfileManager(); + configuration = profileManager->get_configuration(); +@@ -42,7 +42,7 @@ + } + + Presage::Presage (PresageCallback* callback, const std::string config_filename) +- throw (PresageException) ++ noexcept(false) + { + profileManager = new ProfileManager(config_filename); + configuration = profileManager->get_configuration(); +@@ -62,7 +62,7 @@ + } + + std::vector<std::string> Presage::predict () +- throw (PresageException) ++ noexcept(false) + { + std::vector<std::string> result; + +@@ -88,7 +88,7 @@ + } + + std::multimap<double, std::string> Presage::predict (std::vector<std::string> filter) +- throw (PresageException) ++ noexcept(false) + { + std::multimap<double, std::string> result; + +@@ -137,20 +137,20 @@ + } + + void Presage::learn(const std::string text) const +- throw (PresageException) ++ noexcept(false) + { + contextTracker->learn(text); // TODO: can pass additional param to + // learn to specify offline learning + } + + PresageCallback* Presage::callback (PresageCallback* callback) +- throw (PresageException) ++ noexcept(false) + { + return const_cast<PresageCallback*>(contextTracker->callback(callback)); + } + + std::string Presage::completion (const std::string str) +- throw (PresageException) ++ noexcept(false) + { + // There are two types of completions: normal and erasing. + // normal_completion = prefix + remainder +@@ -198,37 +198,37 @@ + } + + std::string Presage::context () const +- throw (PresageException) ++ noexcept(false) + { + return contextTracker->getPastStream(); + } + + bool Presage::context_change () const +- throw (PresageException) ++ noexcept(false) + { + return contextTracker->contextChange(); + } + + std::string Presage::prefix () const +- throw (PresageException) ++ noexcept(false) + { + return contextTracker->getPrefix(); + } + + std::string Presage::config (const std::string variable) const +- throw (PresageException) ++ noexcept(false) + { + return configuration->find (variable)->get_value (); + } + + void Presage::config (const std::string variable, const std::string value) const +- throw (PresageException) ++ noexcept(false) + { + configuration->insert (variable, value); + } + + void Presage::save_config () const +- throw (PresageException) ++ noexcept(false) + { + profileManager->save_profile (); + } +--- presage-0.9.1.orig/apps/gtk/gprompter/scintilla/gtk/ScintillaGTK.cxx ++++ presage-0.9.1/apps/gtk/gprompter/scintilla/gtk/ScintillaGTK.cxx +@@ -1626,7 +1626,7 @@ void ScintillaGTK::ReceivedDrop(GtkSelec + drop.push_back('\0'); + NotifyURIDropped(&drop[0]); + } else if ((TypeOfGSD(selection_data) == GDK_TARGET_STRING) || (TypeOfGSD(selection_data) == atomUTF8)) { +- if (TypeOfGSD(selection_data) > 0) { ++ if (TypeOfGSD(selection_data)) { + SelectionText selText; + GetGtkSelectionText(selection_data, selText); + DropAt(posDrop, selText.Data(), selText.Length(), false, selText.rectangular); diff -Nru presage-0.9.1/debian/patches/format-security.patch presage-0.9.1/debian/patches/format-security.patch --- presage-0.9.1/debian/patches/format-security.patch 1970-01-01 01:00:00.000000000 +0100 +++ presage-0.9.1/debian/patches/format-security.patch 2022-08-30 17:56:09.000000000 +0200 @@ -0,0 +1,52 @@ +Description: Fix insecure format strings in the demo code +Author: Simon Chopin <scho...@ubuntu.com> +Origin: ubuntu +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/presage/+bug/1988196 +Last-Update: 2022-08-30 +--- a/src/tools/presageDemo.cpp ++++ b/src/tools/presageDemo.cpp +@@ -173,7 +173,7 @@ + // key corresponding to desired token. selecting + // suggestion. + std::string message = "Last selected word: " + words[c - KEY_F0 - 1]; +- mvprintw(LINES - 3, 0, message.c_str()); ++ mvprintw(LINES - 3, 0, "%s", message.c_str()); + clrtoeol(); + move(LINES, COLS); + +@@ -213,7 +213,7 @@ + { + wclear( win ); + box( win, 0, 0 ); +- mvwprintw( win, 1, 1, str.c_str() ); ++ mvwprintw( win, 1, 1, "%s", str.c_str() ); + wrefresh( win ); + } + +@@ -226,7 +226,7 @@ + int i = 1; + std::vector<std::string>::const_iterator j = words.begin(); + while( j != words.end() ) { +- mvwprintw( win, i, 1, j->c_str() ); ++ mvwprintw( win, i, 1, "%s", j->c_str() ); + i++; + j++; + } +@@ -241,7 +241,7 @@ + for (int i = 1; i <= atoi(suggestions.c_str()); i++) { + std::stringstream ss; + ss << 'F' << i; +- mvwprintw(win, i, 1, ss.str().c_str()); ++ mvwprintw(win, i, 1, "%s", ss.str().c_str()); + } + wrefresh(win); + } +@@ -291,7 +291,7 @@ + strit != listit->end(); + strit++) { + +- mvwprintw(win, line, 1, strit->c_str()); ++ mvwprintw(win, line, 1, "%s", strit->c_str()); + line++; + } + diff -Nru presage-0.9.1/debian/patches/series presage-0.9.1/debian/patches/series --- presage-0.9.1/debian/patches/series 2020-02-08 19:18:10.000000000 +0100 +++ presage-0.9.1/debian/patches/series 2022-08-30 17:52:55.000000000 +0200 @@ -5,3 +5,5 @@ add_presage_config_environment_variable.patch add-missing-online-learning-configuration-value.patch python.diff +c++17.patch +format-security.patch