aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch')
-rw-r--r--meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch335
1 files changed, 335 insertions, 0 deletions
diff --git a/meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch b/meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch
new file mode 100644
index 0000000000..ee63329830
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/systemd-pam-fix-msformat.patch
@@ -0,0 +1,335 @@
+--- systemd-pam-185/src/fsck/fsck.c.orig 2012-06-22 23:22:22.000000000 -0400
++++ systemd-pam-185/src/fsck/fsck.c 2012-06-22 21:15:56.000000000 -0400
+@@ -36,6 +36,8 @@
+ #include "bus-errors.h"
+ #include "virt.h"
+
++#include "config.h"
++
+ static bool arg_skip = false;
+ static bool arg_force = false;
+ static bool arg_show_progress = false;
+@@ -193,9 +195,16 @@
+ char *device;
+ double p;
+ usec_t t;
+-
++#ifdef HAVE_MSFORMAT
+ if (fscanf(f, "%i %lu %lu %ms", &pass, &cur, &max, &device) != 4)
+- break;
++#else
++ device = malloc(257);
++ if (fscanf(f, "%i %lu %lu %256s", &pass, &cur, &max, device) != 4) {
++ free(device);
++ }
++
++#endif /* HAVE_MSFORMAT */
++ break;
+
+ /* Only show one progress counter at max */
+ if (!locked) {
+--- systemd-pam-185/src/core/swap.c.orig 2012-06-22 23:22:55.000000000 -0400
++++ systemd-pam-185/src/core/swap.c 2012-06-22 21:17:10.000000000 -0400
+@@ -40,6 +40,8 @@
+ #include "def.h"
+ #include "path-util.h"
+
++#include "config.h"
++
+ static const UnitActiveState state_translation_table[_SWAP_STATE_MAX] = {
+ [SWAP_DEAD] = UNIT_INACTIVE,
+ [SWAP_ACTIVATING] = UNIT_ACTIVATING,
+@@ -1038,7 +1040,7 @@
+ for (i = 1;; i++) {
+ char *dev = NULL, *d;
+ int prio = 0, k;
+-
++#ifdef HAVE_MSFORMAT
+ if ((k = fscanf(m->proc_swaps,
+ "%ms " /* device/file */
+ "%*s " /* type of swap */
+@@ -1046,10 +1048,18 @@
+ "%*s " /* used */
+ "%i\n", /* priority */
+ &dev, &prio)) != 2) {
+-
++#else
++ dev = malloc(257);
++ if ((k = fscanf(m->proc_swaps,
++ "%256s " /* device/file */
++ "%*s " /* type of swap */
++ "%*s " /* swap size */
++ "%*s " /* used */
++ "%i\n", /* priority */
++ dev, &prio)) != 2) {
++#endif /* HAVE_MSFORMAT */
+ if (k == EOF)
+ break;
+-
+ log_warning("Failed to parse /proc/swaps:%u.", i);
+ free(dev);
+ continue;
+--- systemd-pam-185/src/core/mount-setup.c.orig 2012-06-22 23:23:41.000000000 -0400
++++ systemd-pam-185/src/core/mount-setup.c 2012-06-22 21:19:44.000000000 -0400
+@@ -28,6 +28,7 @@
+ #include <assert.h>
+ #include <unistd.h>
+ #include <ftw.h>
++#include <linux/fs.h>
+
+ #include "mount-setup.h"
+ #include "dev-setup.h"
+@@ -41,6 +41,8 @@
+ #include "path-util.h"
+ #include "missing.h"
+
++#include "config.h"
++
+ #ifndef TTY_GID
+ #define TTY_GID 5
+ #endif
+@@ -200,9 +202,12 @@
+ for (;;) {
+ char *controller;
+ int enabled = 0;
+-
++#ifdef HAVE_MSFORMAT
+ if (fscanf(f, "%ms %*i %*i %i", &controller, &enabled) != 2) {
+-
++#else
++ controller = malloc(257);
++ if (fscanf(f, "%256s %*i %*i %i", controller, &enabled) != 2) {
++#endif /* HAVE_MSFORMAT */
+ if (feof(f))
+ break;
+
+--- systemd-pam-185/src/core/mount.c.orig 2012-06-22 23:24:17.000000000 -0400
++++ systemd-pam-185/src/core/mount.c 2012-06-22 22:51:21.000000000 -0400
+@@ -41,6 +41,8 @@
+ #include "exit-status.h"
+ #include "def.h"
+
++#include "config.h"
++
+ static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
+ [MOUNT_DEAD] = UNIT_INACTIVE,
+ [MOUNT_MOUNTING] = UNIT_ACTIVATING,
+@@ -1514,7 +1516,7 @@
+ int k;
+
+ device = path = options = options2 = fstype = d = p = o = NULL;
+-
++#ifdef HAVE_MSFORMAT
+ if ((k = fscanf(m->proc_self_mountinfo,
+ "%*s " /* (1) mount id */
+ "%*s " /* (2) parent id */
+@@ -1533,7 +1535,31 @@
+ &fstype,
+ &device,
+ &options2)) != 5) {
+-
++#else
++ path = malloc(257);
++ options = malloc(257);
++ fstype = malloc(257);
++ device = malloc(257);
++ options2 = malloc(257);
++ if ((k = fscanf(m->proc_self_mountinfo,
++ "%*s " /* (1) mount id */
++ "%*s " /* (2) parent id */
++ "%*s " /* (3) major:minor */
++ "%*s " /* (4) root */
++ "%256s " /* (5) mount point */
++ "%256s" /* (6) mount options */
++ "%*[^-]" /* (7) optional fields */
++ "- " /* (8) separator */
++ "%256s " /* (9) file system type */
++ "%256s" /* (10) mount source */
++ "%256s" /* (11) mount options 2 */
++ "%*[^\n]", /* some rubbish at the end */
++ path,
++ options,
++ fstype,
++ device,
++ options2)) != 5) {
++#endif /* HAVE_MSFORMAT */
+ if (k == EOF)
+ break;
+
+--- systemd-pam-185/src/core/umount.c.orig 2012-06-22 23:24:37.000000000 -0400
++++ systemd-pam-185/src/core/umount.c 2012-06-22 22:56:15.000000000 -0400
+@@ -35,6 +35,8 @@
+ #include "path-util.h"
+ #include "util.h"
+
++#include "config.h"
++
+ typedef struct MountPoint {
+ char *path;
+ dev_t devnum;
+@@ -74,7 +76,7 @@
+ MountPoint *m;
+
+ path = p = NULL;
+-
++#ifdef HAVE_MSFORMAT
+ if ((k = fscanf(proc_self_mountinfo,
+ "%*s " /* (1) mount id */
+ "%*s " /* (2) parent id */
+@@ -89,6 +91,23 @@
+ "%*s" /* (11) mount options 2 */
+ "%*[^\n]", /* some rubbish at the end */
+ &path)) != 1) {
++#else
++ path = malloc(257);
++ if ((k = fscanf(proc_self_mountinfo,
++ "%*s " /* (1) mount id */
++ "%*s " /* (2) parent id */
++ "%*s " /* (3) major:minor */
++ "%*s " /* (4) root */
++ "%256s " /* (5) mount point */
++ "%*s" /* (6) mount options */
++ "%*[^-]" /* (7) optional fields */
++ "- " /* (8) separator */
++ "%*s " /* (9) file system type */
++ "%*s" /* (10) mount source */
++ "%*s" /* (11) mount options 2 */
++ "%*[^\n]", /* some rubbish at the end */
++ path)) != 1) {
++#endif /* HAVE_MSFORMAT */
+ if (k == EOF)
+ break;
+
+@@ -150,7 +169,7 @@
+ MountPoint *swap;
+ char *dev = NULL, *d;
+ int k;
+-
++#ifdef HAVE_MSFORMAT
+ if ((k = fscanf(proc_swaps,
+ "%ms " /* device/file */
+ "%*s " /* type of swap */
+@@ -158,7 +177,16 @@
+ "%*s " /* used */
+ "%*s\n", /* priority */
+ &dev)) != 1) {
+-
++#else
++ dev = malloc(257);
++ if ((k = fscanf(proc_swaps,
++ "%256s " /* device/file */
++ "%*s " /* type of swap */
++ "%*s " /* swap size */
++ "%*s " /* used */
++ "%*s\n", /* priority */
++ dev)) != 1) {
++#endif /* HAVE_MSFORMAT */
+ if (k == EOF)
+ break;
+
+--- systemd-pam-185/src/shared/socket-util.c.orig 2012-06-22 23:25:00.000000000 -0400
++++ systemd-pam-185/src/shared/socket-util.c 2012-06-22 22:59:27.000000000 -0400
+@@ -39,6 +39,8 @@
+ #include "socket-util.h"
+ #include "missing.h"
+
++#include "config.h"
++
+ int socket_address_parse(SocketAddress *a, const char *s) {
+ int r;
+ char *e, *n;
+@@ -201,8 +203,16 @@
+ a->type = SOCK_RAW;
+
+ errno = 0;
+- if (sscanf(s, "%ms %u", &sfamily, &group) < 1)
++#ifdef HAVE_MSFORMAT
++ if (sscanf(s, "%ms %u", &sfamily, &group) < 1)
++ return errno ? -errno : -EINVAL;
++#else
++ sfamily = malloc(257);
++ if (sscanf(s, "%256s %u", sfamily, &group) < 1) {
++ free(sfamily);
+ return errno ? -errno : -EINVAL;
++ }
++#endif /* HAVE_MSFORMAT */
+
+ if ((family = netlink_family_from_string(sfamily)) < 0)
+ if (safe_atoi(sfamily, &family) < 0) {
+--- systemd-pam-185/src/tmpfiles/tmpfiles.c.orig 2012-06-22 23:25:21.000000000 -0400
++++ systemd-pam-185/src/tmpfiles/tmpfiles.c 2012-06-22 23:13:49.000000000 -0400
+@@ -48,6 +48,8 @@
+ #include "set.h"
+ #include "conf-files.h"
+
++#include "config.h"
++
+ /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
+ * them in the file system. This is intended to be used to create
+ * properly owned directories beneath /tmp, /var/tmp, /run, which are
+@@ -970,7 +972,7 @@
+ i = new0(Item, 1);
+ if (!i)
+ return log_oom();
+-
++#ifdef HAVE_MSFORMAT
+ if (sscanf(buffer,
+ "%c "
+ "%ms "
+@@ -986,6 +988,28 @@
+ &group,
+ &age,
+ &n) < 2) {
++#else
++ i->path = malloc(257);
++ mode = malloc(257);
++ user = malloc(257);
++ group = malloc(257);
++ age = malloc(257);
++ if (sscanf(buffer,
++ "%c "
++ "%256s "
++ "%256s "
++ "%256s "
++ "%256s "
++ "%256s "
++ "%n",
++ &type,
++ i->path,
++ mode,
++ user,
++ group,
++ age,
++ &n) < 2) {
++#endif /* HAVE_MSFORMAT */
+ log_error("[%s:%u] Syntax error.", fname, line);
+ r = -EIO;
+ goto finish;
+--- systemd-pam-185/src/cryptsetup/cryptsetup-generator.c.orig 2012-06-22 23:25:47.000000000 -0400
++++ systemd-pam-185/src/cryptsetup/cryptsetup-generator.c 2012-06-22 23:16:35.000000000 -0400
+@@ -30,6 +30,8 @@
+ #include "virt.h"
+ #include "strv.h"
+
++#include "config.h"
++
+ static const char *arg_dest = "/tmp";
+ static bool arg_enabled = true;
+ static bool arg_read_crypttab = true;
+@@ -421,8 +423,15 @@
+ l = strstrip(line);
+ if (*l == '#' || *l == 0)
+ continue;
+-
++#ifdef HAVE_MSFORMAT
+ k = sscanf(l, "%ms %ms %ms %ms", &name, &device, &password, &options);
++#else
++ name = malloc(257);
++ device = malloc(257);
++ password = malloc(257);
++ options = malloc(257);
++ k = sscanf(l, "%256s %256s %256s %256s", name, device, password, options);
++#endif /* HAVE_MSFORMAT */
+ if (k < 2 || k > 4) {
+ log_error("Failed to parse /etc/crypttab:%u, ignoring.", n);
+ r = EXIT_FAILURE;