From 7e6756af41944569fc2d7903ff122b1d56170e21 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Thu, 6 Jun 2019 16:00:04 +0300 Subject: nfs-utils: fix format strings in nfsdcld --- pkgs/os-specific/linux/nfs-utils/default.nix | 4 +- .../linux/nfs-utils/nfsdcld-sqlite-format.patch | 101 +++++++++++++++++++++ 2 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 pkgs/os-specific/linux/nfs-utils/nfsdcld-sqlite-format.patch (limited to 'pkgs/os-specific/linux/nfs-utils') diff --git a/pkgs/os-specific/linux/nfs-utils/default.nix b/pkgs/os-specific/linux/nfs-utils/default.nix index 29b47f29ed2..9959e100782 100644 --- a/pkgs/os-specific/linux/nfs-utils/default.nix +++ b/pkgs/os-specific/linux/nfs-utils/default.nix @@ -47,7 +47,9 @@ stdenv.mkDerivation rec { ] ++ lib.optional (stdenv ? glibc) "--with-rpcgen=${stdenv.glibc.bin}/bin/rpcgen"; - patches = lib.optionals stdenv.hostPlatform.isMusl [ + patches = [ + ./nfsdcld-sqlite-format.patch + ] ++ lib.optionals stdenv.hostPlatform.isMusl [ (fetchpatch { url = "https://raw.githubusercontent.com/alpinelinux/aports/cb880042d48d77af412d4688f24b8310ae44f55f/main/nfs-utils/0011-exportfs-only-do-glibc-specific-hackery-on-glibc.patch"; sha256 = "0rrddrykz8prk0dcgfvmnz0vxn09dbgq8cb098yjjg19zz6d7vid"; diff --git a/pkgs/os-specific/linux/nfs-utils/nfsdcld-sqlite-format.patch b/pkgs/os-specific/linux/nfs-utils/nfsdcld-sqlite-format.patch new file mode 100644 index 00000000000..cba597b5a7c --- /dev/null +++ b/pkgs/os-specific/linux/nfs-utils/nfsdcld-sqlite-format.patch @@ -0,0 +1,101 @@ +diff -ru3 nfs-utils-2.3.4-old/utils/nfsdcld/sqlite.c nfs-utils-2.3.4-new/utils/nfsdcld/sqlite.c +--- nfs-utils-2.3.4-old/utils/nfsdcld/sqlite.c 2019-05-10 22:09:49.000000000 +0300 ++++ nfs-utils-2.3.4-new/utils/nfsdcld/sqlite.c 2019-06-06 15:57:54.384549915 +0300 +@@ -57,6 +57,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -535,7 +536,7 @@ + xlog(L_ERROR, "Unable to begin transaction: %s", err); + goto rollback; + } +- ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016lx\";", ++ ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016" PRIx64 "\";", + current_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -550,7 +551,7 @@ + xlog(L_ERROR, "Unable to clear records from current epoch: %s", err); + goto rollback; + } +- ret = snprintf(buf, sizeof(buf), "INSERT INTO \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "INSERT INTO \"rec-%016" PRIx64 "\" " + "SELECT id FROM attached.clients;", + current_epoch); + if (ret < 0) { +@@ -703,7 +704,7 @@ + int ret; + sqlite3_stmt *stmt = NULL; + +- ret = snprintf(buf, sizeof(buf), "INSERT OR REPLACE INTO \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "INSERT OR REPLACE INTO \"rec-%016" PRIx64 "\" " + "VALUES (?);", current_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -748,7 +749,7 @@ + int ret; + sqlite3_stmt *stmt = NULL; + +- ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016" PRIx64 "\" " + "WHERE id==?;", current_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -798,7 +799,7 @@ + int ret; + sqlite3_stmt *stmt = NULL; + +- ret = snprintf(buf, sizeof(buf), "SELECT count(*) FROM \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "SELECT count(*) FROM \"rec-%016" PRIx64 "\" " + "WHERE id==?;", recovery_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -873,7 +874,7 @@ + tcur++; + + ret = snprintf(buf, sizeof(buf), "UPDATE grace " +- "SET current = %ld, recovery = %ld;", ++ "SET current = %" PRId64 ", recovery = %" PRId64 ";", + (int64_t)tcur, (int64_t)trec); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -891,7 +892,7 @@ + goto rollback; + } + +- ret = snprintf(buf, sizeof(buf), "CREATE TABLE \"rec-%016lx\" " ++ ret = snprintf(buf, sizeof(buf), "CREATE TABLE \"rec-%016" PRIx64 "\" " + "(id BLOB PRIMARY KEY);", + tcur); + if (ret < 0) { +@@ -915,7 +916,7 @@ + * values in the grace table, just clear out the records for + * the current reboot epoch. + */ +- ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016lx\";", ++ ret = snprintf(buf, sizeof(buf), "DELETE FROM \"rec-%016" PRIx64 "\";", + tcur); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -976,7 +977,7 @@ + goto rollback; + } + +- ret = snprintf(buf, sizeof(buf), "DROP TABLE \"rec-%016lx\";", ++ ret = snprintf(buf, sizeof(buf), "DROP TABLE \"rec-%016" PRIx64 "\";", + recovery_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); +@@ -1027,7 +1028,7 @@ + return -EINVAL; + } + +- ret = snprintf(buf, sizeof(buf), "SELECT * FROM \"rec-%016lx\";", ++ ret = snprintf(buf, sizeof(buf), "SELECT * FROM \"rec-%016" PRIx64 "\";", + recovery_epoch); + if (ret < 0) { + xlog(L_ERROR, "sprintf failed!"); -- cgit 1.4.1