Displaying 20 results from an estimated 84 matches for "chroot_out".
2009 Aug 18
1
CHROOT_IN and CHROOT_OUT
...root 0 Aug 18 10:37 /sysroot/../proc/modules
><fs> cat /../proc/modules
libguestfs: error: open: /../proc/modules: No such file or directory
The underlying reason for this seems to be that ll uses sysroot_path to
establish a path before operating on it, whereas cat uses CHROOT_IN and
CHROOT_OUT to open() inside a chroot. It seems to me that wherever a
path is used directly by a command, there should never be a reason to
use chroot because the real path can always be worked out. The only
place I see for using a chroot is in command and sh.
Is it worth making a bulk CHROOT_IN and CHROOT...
2014 Jan 10
4
Re: RFC: copy-attributes command
...t;
> > +
> > +int
> > +do_copy_attributes (const char *src, const char *dest, int
> > permissions, int xattributes) +{
> > + int r;
> > + struct stat srcstat, deststat;
> > +
> > + CHROOT_IN;
> > + r = stat (src, &srcstat);
> > + CHROOT_OUT;
> > +
> > + if (r == -1) {
> > + reply_with_perror ("stat: %s", src);
> > + return -1;
> > + }
> > +
> > + CHROOT_IN;
> > + r = stat (dest, &deststat);
> > + CHROOT_OUT;
> > +
> > + if (r == -1) {
> >...
2020 Mar 12
0
[PATCH libguestfs 1/3] daemon: xattr: Refactor code which splits attr names from the kernel.
...34 @@ getxattrs (const char *path,
goto error;
}
- for (i = 0, j = 0; i < (size_t) len; i += strlen (&buf[i]) + 1, ++j) {
+ for (i = 0; names[i] != NULL; ++i) {
CHROOT_IN;
- vlen = getxattr (path, &buf[i], NULL, 0);
+ vlen = getxattr (path, names[i], NULL, 0);
CHROOT_OUT;
if (vlen == -1) {
- reply_with_perror ("getxattr");
+ reply_with_perror ("%s: getxattr", names[i]);
goto error;
}
if (vlen > XATTR_SIZE_MAX) {
/* The next call to getxattr will fail anyway, so ... */
- reply_with_error ("ext...
2020 Mar 16
0
[PATCH libguestfs v2 1/3] daemon: xattr: Refactor code which splits attr names from the kernel.
...34 @@ getxattrs (const char *path,
goto error;
}
- for (i = 0, j = 0; i < (size_t) len; i += strlen (&buf[i]) + 1, ++j) {
+ for (i = 0; names[i] != NULL; ++i) {
CHROOT_IN;
- vlen = getxattr (path, &buf[i], NULL, 0);
+ vlen = getxattr (path, names[i], NULL, 0);
CHROOT_OUT;
if (vlen == -1) {
- reply_with_perror ("getxattr");
+ reply_with_perror ("getxattr: %s", names[i]);
goto error;
}
if (vlen > XATTR_SIZE_MAX) {
/* The next call to getxattr will fail anyway, so ... */
- reply_with_error ("ext...
2014 Jan 07
8
RFC: copy-attributes command
Hi,
attached there is a prototype of patch for adding a new copy-attributes
command. Such command would allow copy the attributes of a "file" to
another, so for example in guestfish:
copy-attributes foo bar permissions:true xattributes:false
would only copy the permissions of foo to bar, not copying its extended
attributes too.
Just few notes:
- my first daemon command, so
2014 Jan 07
0
Re: RFC: copy-attributes command
...har *path)
>
> return buf.st_size;
> }
> +
> +int
> +do_copy_attributes (const char *src, const char *dest, int permissions, int xattributes)
> +{
> + int r;
> + struct stat srcstat, deststat;
> +
> + CHROOT_IN;
> + r = stat (src, &srcstat);
> + CHROOT_OUT;
> +
> + if (r == -1) {
> + reply_with_perror ("stat: %s", src);
> + return -1;
> + }
> +
> + CHROOT_IN;
> + r = stat (dest, &deststat);
> + CHROOT_OUT;
> +
> + if (r == -1) {
> + reply_with_perror ("stat: %s", dest);
> +...
2014 Jan 10
0
[PATCH] daemon: xattr: move the listxattrs code in an own function
...ize_t (*listxattr) (const char *path, char *list, size_t size), ssize_t *size);
guestfs_int_xattr_list *
do_getxattrs (const char *path)
@@ -111,27 +112,10 @@ getxattrs (const char *path,
size_t i, j;
guestfs_int_xattr_list *r = NULL;
- CHROOT_IN;
- len = listxattr (path, NULL, 0);
- CHROOT_OUT;
- if (len == -1) {
- reply_with_perror ("listxattr: %s", path);
+ buf = _listxattrs (path, listxattr, &len);
+ if (buf == NULL)
+ /* _listxattrs issues reply_with_perror already. */
goto error;
- }
-
- buf = malloc (len);
- if (buf == NULL) {
- reply_with_perror (...
2014 Jan 13
0
[PATCH] New API: copy-attributes.
...TRIBUTES_MODE_BITMASK))
+ mode = 1;
+ if (!(optargs_bitmask & GUESTFS_COPY_ATTRIBUTES_XATTRIBUTES_BITMASK))
+ xattributes = 1;
+ if (!(optargs_bitmask & GUESTFS_COPY_ATTRIBUTES_OWNERSHIP_BITMASK))
+ ownership = 1;
+ }
+
+ CHROOT_IN;
+ r = stat (src, &srcstat);
+ CHROOT_OUT;
+
+ if (r == -1) {
+ reply_with_perror ("stat: %s", src);
+ return -1;
+ }
+
+ CHROOT_IN;
+ r = stat (dest, &deststat);
+ CHROOT_OUT;
+
+ if (r == -1) {
+ reply_with_perror ("stat: %s", dest);
+ return -1;
+ }
+
+ if (mode &&
+ ((srcstat.st_...
2016 Jan 15
1
[PATCH] daemon: resolve paths for ll and llz
...ay, just for quick interactive sessions.
- */
-
char *
do_ll (const char *path)
{
int r;
char *out;
CLEANUP_FREE char *err = NULL;
+ CLEANUP_FREE char *rpath = NULL;
CLEANUP_FREE char *spath = NULL;
- spath = sysroot_path (path);
+ CHROOT_IN;
+ rpath = realpath (path, NULL);
+ CHROOT_OUT;
+ if (rpath == NULL) {
+ reply_with_perror ("%s", path);
+ return NULL;
+ }
+
+ spath = sysroot_path (rpath);
if (!spath) {
reply_with_perror ("malloc");
return NULL;
@@ -131,9 +134,18 @@ do_llz (const char *path)
int r;
char *out;
CLEANUP_FREE ch...
2014 Apr 30
2
[PATCH] daemon: xattr: factorize do_getxattr and do_lgetxattr
...t r;
char *buf;
size_t len;
@@ -496,49 +506,7 @@ do_getxattr (const char *path, const char *name, size_t *size_r)
char *
do_lgetxattr (const char *path, const char *name, size_t *size_r)
{
- ssize_t r;
- char *buf;
- size_t len;
-
- CHROOT_IN;
- r = lgetxattr (path, name, NULL, 0);
- CHROOT_OUT;
- if (r == -1) {
- reply_with_perror ("lgetxattr");
- return NULL;
- }
-
- len = r;
-
- if (len > XATTR_SIZE_MAX) {
- reply_with_error ("extended attribute is too large");
- return NULL;
- }
-
- buf = malloc (len);
- if (buf == NULL) {
- reply_with_perr...
2020 Mar 16
6
[PATCH libguestfs v2 0/3] daemon: Fix various commands which break on NTFS-3g compressed files.
v1 here:
https://www.redhat.com/archives/libguestfs/2020-March/msg00099.html
This one fixes most of the points picked up in review, and does not
strdup the strings which should keep down memory usage if that is a
concern.
Rich.
2015 Dec 02
3
[PATCH] daemon: improve internal commandrvf
- add a flag to request chroot for the process, which is done only as
very last (before chdir) operation before exec'ing the process in the
child: this avoids using CHROOT_IN & CHROOT_OUT around command*
invocations, and reduces the code spent in chroot mode
- add failure checks for dup2 and open done in child, not proceeding to
executing the process if they fail
- open /dev/null without O_CLOEXEC, so it stays available for the
exec'ed process, and thus we don't need t...
2020 Mar 12
8
[PATCH libguestfs 0/3] daemon: Fix various commands which break on NTFS-3g compressed files.
https://bugzilla.redhat.com/show_bug.cgi?id=1811539
Commands including virt-diff which read extended attributes will
sometimes fail on NTFS filesystems that are using system compressed.
The reason is complex, see comment 5 of the bug linked above.
This patch filters out the troublesome xattr. For justification, see
the comment I added in patch 3.
Patch 1 & 2 are refactoring.
I was on the
2015 Dec 01
2
Re: [PATCH] daemon: always provide stdin when running chroot commands (RHBZ#1280029)
...nd commandvf are definitely problematic. chroot should be
> done in the child, which also removes the need to chroot out in the
> parent.
The CHROOT_IN/OUT business does need to be rewritten. Every
instance where we currently do something like:
CHROOT_IN;
r = stat (fd, &statbuf);
CHROOT_OUT
[https://github.com/libguestfs/libguestfs/blob/master/daemon/stat.c#L93-L95]
should instead be forking a subprocess, chrooting in the subprocess,
and doing the system call in the subprocess.
The problem which makes it not so easy is that instead of using a nice
local variable, we would have to p...
2015 Nov 19
5
[PATCH] daemon: always provide stdin when running chroot commands (RHBZ#1280029)
...) {
@@ -266,8 +279,10 @@ do_command (char *const *argv)
return NULL;
}
+ flags = COMMAND_FLAG_CHROOT_COPY_FILE_TO_STDIN | fd;
+
CHROOT_IN;
- r = commandv (&out, &err, (const char * const *) argv);
+ r = commandvf (&out, &err, flags, (const char * const *) argv);
CHROOT_OUT;
free_bind_state (&bind_state);
--
2.1.0
2015 Dec 01
0
Re: [PATCH] daemon: always provide stdin when running chroot commands (RHBZ#1280029)
...ot should be
> > done in the child, which also removes the need to chroot out in the
> > parent.
>
> The CHROOT_IN/OUT business does need to be rewritten. Every
> instance where we currently do something like:
>
> CHROOT_IN;
> r = stat (fd, &statbuf);
> CHROOT_OUT
>
Ouch. Fortunately commandvf change should be easy.
> [https://github.com/libguestfs/libguestfs/blob/master/daemon/stat.c#L93-L95]
>
> should instead be forking a subprocess, chrooting in the subprocess,
> and doing the system call in the subprocess.
>
> The problem which...
2009 Aug 11
1
[PATCH libguestfs] generator.ml: constify do_mkdtemp
...o_mkdtemp (const char *template)
{
- char *r;
-
- NEED_ROOT (return NULL);
- ABS_PATH (template, return NULL);
+ char *r = strdup (template);
+ if (r == NULL) {
+ reply_with_perror ("strdup");
+ return NULL;
+ }
CHROOT_IN;
- r = mkdtemp (template);
+ r = mkdtemp (r);
CHROOT_OUT;
- if (r == NULL) {
+ if (r == NULL)
reply_with_perror ("mkdtemp: %s", template);
- return NULL;
- }
- /* The caller will free template AND try to free the return value,
- * so we must make a copy here.
- */
- if (r == template) {
- r = strdup (template);
- if (r...
2015 Dec 02
0
Re: [PATCH] daemon: improve internal commandrvf
On Wed, Dec 02, 2015 at 02:00:57PM +0100, Pino Toscano wrote:
> - add a flag to request chroot for the process, which is done only as
> very last (before chdir) operation before exec'ing the process in the
> child: this avoids using CHROOT_IN & CHROOT_OUT around command*
> invocations, and reduces the code spent in chroot mode
> - add failure checks for dup2 and open done in child, not proceeding to
> executing the process if they fail
> - open /dev/null without O_CLOEXEC, so it stays available for the
> exec'ed process, and...
2012 Oct 14
1
[PATCH] NEW API: mktemp
...}
+ }
+
+ if (dest_name == NULL) {
+ dest_name = strdup (template);
+ if (dest_name == NULL) {
+ reply_with_perror ("strdup");
+ return NULL;
+ }
+ }
+
+ CHROOT_IN;
+ if (dir)
+ r = mkdtemp (dest_name);
+ else
+ err = mkstemps (dest_name, suffix_len);
+ CHROOT_OUT;
+
+ if (dir) {
+ if (r == NULL) {
+ reply_with_perror ("%s", dest_name);
+ free (dest_name);
+ }
+ return r;
+ } else {
+ if (err == -1) {
+ reply_with_perror ("%s", dest_name);
+ free (dest_name);
+ return NULL;
+ }
+ return dest_na...
2009 Aug 12
23
[PATCH 0/23] factor and const-correctness
This started as a simple warning-elimination change.
I'll get back to that series shortly ;-)
It turned into a factorization and constification exercise
during which I got a taste of ocaml. Thanks to Rich Jones
for help with a few snippets in generator.ml.
The overall result is that many previously-manually-maintained
bits from daemon/*.c functions are now hoisted into the automatically-