+--- PackageKit-1.0.5/backends/zypp/pk-backend-zypp.cpp.orig 2014-12-15 16:21:39.000000000 +0100
++++ PackageKit-1.0.5/backends/zypp/pk-backend-zypp.cpp 2015-02-21 11:57:31.071358228 +0100
+@@ -273,7 +273,7 @@
+ }
+
+ virtual Action problem (zypp::Resolvable::constPtr resolvable, Error error, const std::string &description, RpmLevel level) {
+- pk_backend_job_error_code (_job, PK_ERROR_ENUM_PACKAGE_FAILED_TO_INSTALL, description.c_str ());
++ pk_backend_job_error_code (_job, PK_ERROR_ENUM_PACKAGE_FAILED_TO_INSTALL, "%s", description.c_str ());
+ return ABORT;
+ }
+
+@@ -308,7 +308,7 @@
+ }
+
+ virtual Action problem (zypp::Resolvable::constPtr resolvable, Error error, const std::string &description) {
+- pk_backend_job_error_code (_job, PK_ERROR_ENUM_CANNOT_REMOVE_SYSTEM_PACKAGE, description.c_str ());
++ pk_backend_job_error_code (_job, PK_ERROR_ENUM_CANNOT_REMOVE_SYSTEM_PACKAGE, "%s", description.c_str ());
+ return ABORT;
+ }
+
+@@ -407,7 +407,7 @@
+ {
+ virtual Action requestMedia (zypp::Url &url, unsigned mediaNr, const std::string &label, zypp::media::MediaChangeReport::Error error, const std::string &description, const std::vector<std::string> & devices, unsigned int &dev_current)
+ {
+- pk_backend_job_error_code (_job, PK_ERROR_ENUM_REPO_NOT_AVAILABLE, description.c_str ());
++ pk_backend_job_error_code (_job, PK_ERROR_ENUM_REPO_NOT_AVAILABLE, "%s", description.c_str ());
+ // We've to abort here, because there is currently no feasible way to inform the user to insert/change media
+ return ABORT;
+ }
+@@ -597,10 +597,10 @@
+ initialized = TRUE;
+ }
+ } catch (const ZYppFactoryException &ex) {
+- pk_backend_job_error_code (priv->currentJob, PK_ERROR_ENUM_FAILED_INITIALIZATION, ex.asUserString().c_str() );
++ pk_backend_job_error_code (priv->currentJob, PK_ERROR_ENUM_FAILED_INITIALIZATION, "%s", ex.asUserString().c_str() );
+ return NULL;
+ } catch (const Exception &ex) {
+- pk_backend_job_error_code (priv->currentJob, PK_ERROR_ENUM_INTERNAL_ERROR, ex.asUserString().c_str() );
++ pk_backend_job_error_code (priv->currentJob, PK_ERROR_ENUM_INTERNAL_ERROR, "%s", ex.asUserString().c_str() );
+ return NULL;
+ }
+
+@@ -966,7 +966,7 @@
+ RepoManager manager;
+ info = manager.getRepositoryInfo (alias);
+ } catch (const repo::RepoNotFoundException &ex) {
+- pk_backend_job_error_code (job, PK_ERROR_ENUM_REPO_NOT_FOUND, ex.asUserString().c_str() );
++ pk_backend_job_error_code (job, PK_ERROR_ENUM_REPO_NOT_FOUND, "%s", ex.asUserString().c_str() );
+ return RepoInfo ();
+ }
+
+@@ -1411,7 +1411,7 @@
+ it->statusReset ();
+ }
+
+- pk_backend_job_error_code (job, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, emsg);
++ pk_backend_job_error_code (job, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, "%s", emsg);
+ g_free (emsg);
+
+ goto exit;
+@@ -1538,11 +1538,11 @@
+ pk_backend_job_set_percentage(job, 100);
+ ret = TRUE;
+ } catch (const repo::RepoNotFoundException &ex) {
+- pk_backend_job_error_code (job, PK_ERROR_ENUM_REPO_NOT_FOUND, ex.asUserString().c_str() );
++ pk_backend_job_error_code (job, PK_ERROR_ENUM_REPO_NOT_FOUND, "%s", ex.asUserString().c_str() );
+ } catch (const target::rpm::RpmException &ex) {
+- pk_backend_job_error_code (job, PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED, ex.asUserString().c_str () );
++ pk_backend_job_error_code (job, PK_ERROR_ENUM_PACKAGE_DOWNLOAD_FAILED, "%s", ex.asUserString().c_str () );
+ } catch (const Exception &ex) {
+- pk_backend_job_error_code (job, PK_ERROR_ENUM_INTERNAL_ERROR, ex.asUserString().c_str() );
++ pk_backend_job_error_code (job, PK_ERROR_ENUM_INTERNAL_ERROR, "%s", ex.asUserString().c_str() );
+ }
+
+ exit:
+@@ -1601,7 +1601,7 @@
+ catch ( const Exception &e)
+ {
+ // FIXME: make sure this dumps out the right sring.
+- pk_backend_job_error_code (job, PK_ERROR_ENUM_REPO_NOT_FOUND, e.asUserString().c_str() );
++ pk_backend_job_error_code (job, PK_ERROR_ENUM_REPO_NOT_FOUND, "%s", e.asUserString().c_str() );
+ return FALSE;
+ }
+
+@@ -1651,7 +1651,7 @@
+ pk_backend_job_set_percentage (job, i >= num_of_repos ? 100 : (100 * i) / num_of_repos);
+ }
+ if (repo_messages != NULL)
+- g_printf(repo_messages);
++ g_printf("%s", repo_messages);
+
+ pk_backend_job_set_percentage (job, 100);
+ g_free (repo_messages);
+@@ -2373,7 +2373,7 @@
+ try {
+ manager.removeRepository (tmpRepo);
+ } catch (const repo::RepoNotFoundException &ex) {
+- pk_backend_job_error_code (job, PK_ERROR_ENUM_REPO_NOT_FOUND, ex.asUserString().c_str() );
++ pk_backend_job_error_code (job, PK_ERROR_ENUM_REPO_NOT_FOUND, "%s", ex.asUserString().c_str() );
+ }
+ }
+
+@@ -3308,7 +3308,7 @@
+ } catch (const repo::RepoException &ex) {
+ pk_backend_job_error_code (job, PK_ERROR_ENUM_INTERNAL_ERROR, "Can't access the given URL");
+ } catch (const Exception &ex) {
+- pk_backend_job_error_code (job, PK_ERROR_ENUM_INTERNAL_ERROR, ex.asString ().c_str ());
++ pk_backend_job_error_code (job, PK_ERROR_ENUM_INTERNAL_ERROR, "%s", ex.asString ().c_str ());
+ }
+ }
+