summary refs log tree commit diff
path: root/pkgs/os-specific/linux/nfs-utils
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2019-06-06 16:00:04 +0300
committerNikolay Amiantov <ab@fmap.me>2019-06-06 16:00:48 +0300
commit7e6756af41944569fc2d7903ff122b1d56170e21 (patch)
tree390f3a6cd6910d352c3a8c69d3ce8c8ab079455d /pkgs/os-specific/linux/nfs-utils
parentb0f4499e92152feb642c3ec1f6ce73c7971b2a65 (diff)
downloadnixpkgs-7e6756af41944569fc2d7903ff122b1d56170e21.tar
nixpkgs-7e6756af41944569fc2d7903ff122b1d56170e21.tar.gz
nixpkgs-7e6756af41944569fc2d7903ff122b1d56170e21.tar.bz2
nixpkgs-7e6756af41944569fc2d7903ff122b1d56170e21.tar.lz
nixpkgs-7e6756af41944569fc2d7903ff122b1d56170e21.tar.xz
nixpkgs-7e6756af41944569fc2d7903ff122b1d56170e21.tar.zst
nixpkgs-7e6756af41944569fc2d7903ff122b1d56170e21.zip
nfs-utils: fix format strings in nfsdcld
Diffstat (limited to 'pkgs/os-specific/linux/nfs-utils')
-rw-r--r--pkgs/os-specific/linux/nfs-utils/default.nix4
-rw-r--r--pkgs/os-specific/linux/nfs-utils/nfsdcld-sqlite-format.patch101
2 files changed, 104 insertions, 1 deletions
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 <stdlib.h>
+ #include <stdint.h>
+ #include <limits.h>
++#include <inttypes.h>
+ #include <sqlite3.h>
+ #include <linux/limits.h>
+ 
+@@ -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!");