Commit 44434ffa authored by David Zeuthen's avatar David Zeuthen

avoid defining the same functions in both libpolkit and libpolkit-grant

Looks like I forgot to delete those when doing the big move in
commit d9d79087
parent 3a02908e
......@@ -51,7 +51,7 @@ polkit_grant_helper_pam_LDADD = @AUTH_LIBS@
polkit_explicit_grant_helper_SOURCES = polkit-explicit-grant-helper.c
polkit_explicit_grant_helper_CFLAGS = @DBUS_CFLAGS@
polkit_explicit_grant_helper_LDADD = $(top_builddir)/polkit/libpolkit.la $(top_builddir)/polkit-dbus/libpolkit-dbus.la
polkit_explicit_grant_helper_LDADD = $(top_builddir)/polkit/libpolkit.la $(top_builddir)/polkit-dbus/libpolkit-dbus.la $(top_builddir)/polkit-grant/libpolkit-grant.la
polkit_revoke_helper_SOURCES = polkit-revoke-helper.c
polkit_revoke_helper_CFLAGS = @DBUS_CFLAGS@
......
......@@ -748,153 +748,3 @@ polkit_authorization_db_is_caller_authorized (PolKitAuthorizationDB *authdb,
return ret;
}
static polkit_bool_t
_write_to_fd (int fd, const char *str, ssize_t str_len)
{
polkit_bool_t ret;
ssize_t written;
ret = FALSE;
written = 0;
while (written < str_len) {
ssize_t ret;
ret = write (fd, str + written, str_len - written);
if (ret < 0) {
if (errno == EAGAIN || errno == EINTR) {
continue;
} else {
goto out;
}
}
written += ret;
}
ret = TRUE;
out:
return ret;
}
polkit_bool_t
_polkit_authorization_db_auth_file_add (const char *root, polkit_bool_t transient, uid_t uid, char *str_to_add)
{
int fd;
char *contents;
gsize contents_size;
char *path;
char *path_tmp;
GError *error;
polkit_bool_t ret;
struct stat statbuf;
struct passwd *pw;
ret = FALSE;
path = NULL;
path_tmp = NULL;
contents = NULL;
pw = getpwuid (uid);
if (pw == NULL) {
g_warning ("cannot lookup user name for uid %d\n", uid);
goto out;
}
path = g_strdup_printf ("%s/user-%s.auths", root, pw->pw_name);
path_tmp = g_strdup_printf ("%s.XXXXXX", path);
if (stat (path, &statbuf) != 0 && errno == ENOENT) {
//fprintf (stderr, "path=%s does not exist (egid=%d): %m!\n", path, getegid ());
g_free (path_tmp);
path_tmp = path;
path = NULL;
/* Write a nice blurb if we're creating the file for the first time */
contents = g_strdup_printf (
"# This file lists authorizations for user %s\n"
"%s"
"# \n"
"# File format may change at any time; do not rely on it. To manage\n"
"# authorizations use polkit-auth(1) instead.\n"
"\n",
pw->pw_name,
transient ? "# (these are temporary and will be removed on the next system boot)\n" : "");
contents_size = strlen (contents);
} else {
error = NULL;
if (!g_file_get_contents (path, &contents, &contents_size, &error)) {
g_warning ("Cannot read authorizations file %s: %s", path, error->message);
g_error_free (error);
goto out;
}
}
if (path != NULL) {
fd = mkstemp (path_tmp);
if (fd < 0) {
fprintf (stderr, "Cannot create file '%s': %m\n", path_tmp);
goto out;
}
if (fchmod (fd, 0464) != 0) {
fprintf (stderr, "Cannot change mode for '%s' to 0460: %m\n", path_tmp);
close (fd);
unlink (path_tmp);
goto out;
}
} else {
fd = open (path_tmp, O_RDWR|O_CREAT, 0464);
if (fd < 0) {
fprintf (stderr, "Cannot create file '%s': %m\n", path_tmp);
goto out;
}
}
if (!_write_to_fd (fd, contents, contents_size)) {
g_warning ("Cannot write to temporary authorizations file %s: %m", path_tmp);
close (fd);
if (unlink (path_tmp) != 0) {
g_warning ("Cannot unlink %s: %m", path_tmp);
}
goto out;
}
if (!_write_to_fd (fd, str_to_add, strlen (str_to_add))) {
g_warning ("Cannot write to temporary authorizations file %s: %m", path_tmp);
close (fd);
if (unlink (path_tmp) != 0) {
g_warning ("Cannot unlink %s: %m", path_tmp);
}
goto out;
}
close (fd);
if (path != NULL) {
if (rename (path_tmp, path) != 0) {
g_warning ("Cannot rename %s to %s: %m", path_tmp, path);
if (unlink (path_tmp) != 0) {
g_warning ("Cannot unlink %s: %m", path_tmp);
}
goto out;
}
}
/* trigger a reload */
if (utimes (PACKAGE_LOCALSTATE_DIR "/lib/misc/PolicyKit.reload", NULL) != 0) {
g_warning ("Error updating access+modification time on file '%s': %m\n",
PACKAGE_LOCALSTATE_DIR "/lib/misc/PolicyKit.reload");
}
ret = TRUE;
out:
if (contents != NULL)
g_free (contents);
if (path != NULL)
g_free (path);
if (path_tmp != NULL)
g_free (path_tmp);
return ret;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment