From: Christian Brauner Date: Tue, 21 Aug 2018 09:35:31 +0000 (+0200) Subject: pam_cgfs: build from the same sources as liblxc X-Git-Tag: lxc-3.1.0~140^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2558%2Fhead;p=thirdparty%2Flxc.git pam_cgfs: build from the same sources as liblxc Closes #2556. Signed-off-by: Christian Brauner --- diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am index 6cd9dc341..32bb8d5e0 100644 --- a/src/lxc/Makefile.am +++ b/src/lxc/Makefile.am @@ -386,12 +386,27 @@ endif if ENABLE_PAM if HAVE_PAM pam_LTLIBRARIES = pam_cgfs.la + pam_cgfs_la_SOURCES = pam/pam_cgfs.c \ - pam/utils.c pam/utils.h -pam_cgfs_la_CFLAGS = $(AM_CFLAGS) + macro.h \ + file_utils.c file_utils.h \ + string_utils.c string_utils.h + +if !HAVE_STRLCAT +pam_cgfs_la_SOURCES += ../include/strlcat.c ../include/strlcat.h +endif + +if !HAVE_STRLCPY +pam_cgfs_la_SOURCES += ../include/strlcpy.c ../include/strlcpy.h +endif + +pam_cgfs_la_CFLAGS = $(AM_CFLAGS) \ + -DNO_LOG + pam_cgfs_la_LIBADD = $(AM_LIBS) \ $(PAM_LIBS) \ -L$(top_srcdir) + pam_cgfs_la_LDFLAGS = $(AM_LDFLAGS) \ -avoid-version \ -module \ diff --git a/src/lxc/pam/pam_cgfs.c b/src/lxc/pam/pam_cgfs.c index 2975b6456..9a8e87760 100644 --- a/src/lxc/pam/pam_cgfs.c +++ b/src/lxc/pam/pam_cgfs.c @@ -57,6 +57,7 @@ #include #include +#include "macro.h" #include "utils.h" #ifndef HAVE_STRLCPY diff --git a/src/lxc/pam/utils.c b/src/lxc/pam/utils.c deleted file mode 100644 index 5da870c58..000000000 --- a/src/lxc/pam/utils.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * lxc: linux Container library - * - * (C) Copyright IBM Corp. 2007, 2008 - * - * Authors: - * Daniel Lezcano - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "utils.h" - -#ifndef HAVE_STRLCAT -#include "include/strlcat.h" -#endif - -bool file_exists(const char *f) -{ - struct stat statbuf; - - return stat(f, &statbuf) == 0; -} - -void *must_realloc(void *orig, size_t sz) -{ - void *ret; - - do { - ret = realloc(orig, sz); - } while (!ret); - - return ret; -} - -char *must_copy_string(const char *entry) -{ - char *ret; - - if (!entry) - return NULL; - do { - ret = strdup(entry); - } while (!ret); - - return ret; -} - -char *must_make_path(const char *first, ...) -{ - va_list args; - char *cur, *dest; - size_t full_len = strlen(first); - size_t buf_len; - - dest = must_copy_string(first); - - va_start(args, first); - while ((cur = va_arg(args, char *)) != NULL) { - full_len += strlen(cur); - if (cur[0] != '/') - full_len++; - - buf_len = full_len + 1; - dest = must_realloc(dest, buf_len); - - if (cur[0] != '/') - (void)strlcat(dest, "/", buf_len); - (void)strlcat(dest, cur, buf_len); - } - va_end(args); - - return dest; -} - -bool is_fs_type(const struct statfs *fs, fs_type_magic magic_val) -{ - return (fs->f_type == (fs_type_magic)magic_val); -} - -bool has_fs_type(const char *path, fs_type_magic magic_val) -{ - bool has_type; - int ret; - struct statfs sb; - - ret = statfs(path, &sb); - if (ret < 0) - return false; - - has_type = is_fs_type(&sb, magic_val); - - return has_type; -} diff --git a/src/lxc/pam/utils.h b/src/lxc/pam/utils.h deleted file mode 100644 index f0a01e693..000000000 --- a/src/lxc/pam/utils.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * lxc: linux Container library - * - * (C) Copyright IBM Corp. 2007, 2008 - * - * Authors: - * Daniel Lezcano - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef __PAM_UTILS_H -#define __PAM_UTILS_H - -#include - -#ifndef CGROUP_SUPER_MAGIC -#define CGROUP_SUPER_MAGIC 0x27e0eb -#endif - -#ifndef CGROUP2_SUPER_MAGIC -#define CGROUP2_SUPER_MAGIC 0x63677270 -#endif - -typedef __typeof__(((struct statfs *)NULL)->f_type) fs_type_magic; -extern bool file_exists(const char *f); -extern void *must_realloc(void *orig, size_t sz); -extern char *must_copy_string(const char *entry); -__attribute__((sentinel)) extern char *must_make_path(const char *first, ...); -extern bool has_fs_type(const char *path, fs_type_magic magic_val); - -#endif /* __PAM_UTILS_H */