5c0f7d38a6
reverse-24757-use-grant-references.patch - fate#313222 - xenstore-chmod should support 256 permissions 26189-xenstore-chmod.patch - bnc#789945 - VUL-0: CVE-2012-5510: xen: Grant table version switch list corruption vulnerability (XSA-26) CVE-2012-5510-xsa26.patch - bnc#789944 - VUL-0: CVE-2012-5511: xen: Several HVM operations do not validate the range of their inputs (XSA-27) CVE-2012-5511-xsa27.patch - bnc#789951 - VUL-0: CVE-2012-5513: xen: XENMEM_exchange may overwrite hypervisor memory (XSA-29) CVE-2012-5513-xsa29.patch - bnc#789948 - VUL-0: CVE-2012-5514: xen: Missing unlock in guest_physmap_mark_populate_on_demand() (XSA-30) CVE-2012-5514-xsa30.patch - bnc#789950 - VUL-0: CVE-2012-5515: xen: Several memory hypercall operations allow invalid extent order values (XSA-31) CVE-2012-5515-xsa31.patch - bnc#789952 - VUL-0: CVE-2012-5525: xen: Several hypercalls do not validate input GFNs (XSA-32) CVE-2012-5525-xsa32.patch - Upstream patches from Jan 26129-ACPI-BGRT-invalidate.patch 26132-tmem-save-NULL-check.patch 26134-x86-shadow-invlpg-check.patch 26139-cpumap-masking.patch 26148-vcpu-timer-overflow.patch (Replaces CVE-2012-4535-xsa20.patch) OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=219
86 lines
2.9 KiB
Diff
86 lines
2.9 KiB
Diff
# HG changeset patch
|
|
# Parent 8b93ac0c93f3fb8a140b4688ba71841ac927d4e3
|
|
xenstore-chmod: handle arbitrary number of perms rather than MAX_PERMS constant
|
|
|
|
Constant MAX_PERMS 16 is too small to use in some occasions, e.g. if
|
|
there are more than 16 domU(s) on one hypervisor (it's easy to
|
|
achieve) and one wants to do xenstore-chmod PATH to all domU(s). So,
|
|
remove MAX_PERMS limitation and make it as arbitrary number of perms.
|
|
|
|
Signed-off-by: Chunyan Liu <cyliu@suse.com>
|
|
Acked-by: Ian Campbell <ian.campbell@citrix.com>
|
|
|
|
diff -r 8b93ac0c93f3 tools/xenstore/xenstore_client.c
|
|
--- a/tools/xenstore/xenstore_client.c Tue Nov 13 11:19:17 2012 +0000
|
|
+++ b/tools/xenstore/xenstore_client.c Mon Nov 26 11:33:38 2012 +0800
|
|
@@ -25,7 +25,6 @@
|
|
#define PATH_SEP '/'
|
|
#define MAX_PATH_LEN 256
|
|
|
|
-#define MAX_PERMS 16
|
|
|
|
enum mode {
|
|
MODE_unknown,
|
|
@@ -407,44 +406,41 @@ perform(enum mode mode, int optind, int
|
|
output("%s\n", list[i]);
|
|
}
|
|
free(list);
|
|
- optind++;
|
|
- break;
|
|
- }
|
|
- case MODE_ls: {
|
|
- do_ls(xsh, argv[optind], 0, prefix);
|
|
- optind++;
|
|
- break;
|
|
+ optind++;
|
|
+ break;
|
|
+ }
|
|
+ case MODE_ls: {
|
|
+ do_ls(xsh, argv[optind], 0, prefix);
|
|
+ optind++;
|
|
+ break;
|
|
}
|
|
case MODE_chmod: {
|
|
- struct xs_permissions perms[MAX_PERMS];
|
|
- int nperms = 0;
|
|
/* save path pointer: */
|
|
char *path = argv[optind++];
|
|
- for (; argv[optind]; optind++, nperms++)
|
|
+ int nperms = argc - optind;
|
|
+ struct xs_permissions perms[nperms];
|
|
+ int i;
|
|
+ for (i = 0; argv[optind]; optind++, i++)
|
|
{
|
|
- if (MAX_PERMS <= nperms)
|
|
- errx(1, "Too many permissions specified. "
|
|
- "Maximum per invocation is %d.", MAX_PERMS);
|
|
-
|
|
- perms[nperms].id = atoi(argv[optind]+1);
|
|
+ perms[i].id = atoi(argv[optind]+1);
|
|
|
|
switch (argv[optind][0])
|
|
{
|
|
case 'n':
|
|
- perms[nperms].perms = XS_PERM_NONE;
|
|
+ perms[i].perms = XS_PERM_NONE;
|
|
break;
|
|
case 'r':
|
|
- perms[nperms].perms = XS_PERM_READ;
|
|
+ perms[i].perms = XS_PERM_READ;
|
|
break;
|
|
case 'w':
|
|
- perms[nperms].perms = XS_PERM_WRITE;
|
|
+ perms[i].perms = XS_PERM_WRITE;
|
|
break;
|
|
case 'b':
|
|
- perms[nperms].perms = XS_PERM_READ | XS_PERM_WRITE;
|
|
+ perms[i].perms = XS_PERM_READ | XS_PERM_WRITE;
|
|
break;
|
|
default:
|
|
errx(1, "Invalid permission specification: '%c'",
|
|
- argv[optind][0]);
|
|
+ argv[optind][0]);
|
|
}
|
|
}
|
|
|