Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:EDV_Lotse:1C
postgresql10
00006-pg_receivewal.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 00006-pg_receivewal.patch of Package postgresql10
diff -urNp a/src/bin/pg_basebackup/pg_receivewal.c b/src/bin/pg_basebackup/pg_receivewal.c --- a/src/bin/pg_basebackup/pg_receivewal.c 2018-05-07 23:51:40.000000000 +0300 +++ b/src/bin/pg_basebackup/pg_receivewal.c 2018-07-06 14:48:10.133357476 +0300 @@ -91,6 +91,7 @@ usage(void) printf(_(" -d, --dbname=CONNSTR connection string\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -p, --port=PORT database server port number\n")); + printf(_(" -u, --umask set files mode according to umask (might break security!)\n")); printf(_(" -U, --username=NAME connect as specified database user\n")); printf(_(" -w, --no-password never prompt for password\n")); printf(_(" -W, --password force password prompt (should happen automatically)\n")); @@ -461,6 +462,7 @@ main(int argc, char **argv) {"dbname", required_argument, NULL, 'd'}, {"host", required_argument, NULL, 'h'}, {"port", required_argument, NULL, 'p'}, + {"umask", no_argument, NULL, 'u'}, {"username", required_argument, NULL, 'U'}, {"no-loop", no_argument, NULL, 'n'}, {"no-password", no_argument, NULL, 'w'}, @@ -499,7 +501,7 @@ main(int argc, char **argv) } } - while ((c = getopt_long(argc, argv, "D:d:h:p:U:s:S:nwWvZ:", + while ((c = getopt_long(argc, argv, "D:d:h:p:U:s:S:nuwWvZ", long_options, &option_index)) != -1) { switch (c) @@ -522,6 +524,9 @@ main(int argc, char **argv) } dbport = pg_strdup(optarg); break; + case 'u': + useumask = 1; + break; case 'U': dbuser = pg_strdup(optarg); break; diff -urNp a/src/bin/pg_basebackup/pg_recvlogical.c b/src/bin/pg_basebackup/pg_recvlogical.c --- a/src/bin/pg_basebackup/pg_recvlogical.c 2018-05-07 23:51:40.000000000 +0300 +++ b/src/bin/pg_basebackup/pg_recvlogical.c 2018-07-06 14:27:21.819405264 +0300 @@ -335,11 +335,14 @@ StreamLogicalLog(void) { struct stat statbuf; + mode_t mode = (useumask == 1) ? + (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) : (S_IRUSR | S_IWUSR); + if (strcmp(outfile, "-") == 0) outfd = fileno(stdout); else outfd = open(outfile, O_CREAT | O_APPEND | O_WRONLY | PG_BINARY, - S_IRUSR | S_IWUSR); + mode); if (outfd == -1) { fprintf(stderr, diff -urNp a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c --- a/src/bin/pg_basebackup/streamutil.c 2018-05-07 23:51:40.000000000 +0300 +++ b/src/bin/pg_basebackup/streamutil.c 2018-07-06 14:27:21.820405275 +0300 @@ -38,6 +38,7 @@ char *dbhost = NULL; char *dbuser = NULL; char *dbport = NULL; char *dbname = NULL; +int useumask = 0; /* 0=auto, -1=never, 1=always */ int dbgetpassword = 0; /* 0=auto, -1=never, 1=always */ static bool have_password = false; static char password[100]; diff -urNp a/src/bin/pg_basebackup/streamutil.h b/src/bin/pg_basebackup/streamutil.h --- a/src/bin/pg_basebackup/streamutil.h 2018-05-07 23:51:40.000000000 +0300 +++ b/src/bin/pg_basebackup/streamutil.h 2018-07-06 14:27:21.820405275 +0300 @@ -23,6 +23,7 @@ extern char *dbhost; extern char *dbuser; extern char *dbport; extern char *dbname; +extern int useumask; extern int dbgetpassword; /* Connection kept global so we can disconnect easily */ diff -urNp a/src/bin/pg_basebackup/walmethods.c b/src/bin/pg_basebackup/walmethods.c --- a/src/bin/pg_basebackup/walmethods.c 2018-05-07 23:51:40.000000000 +0300 +++ b/src/bin/pg_basebackup/walmethods.c 2018-07-06 14:27:21.821405285 +0300 @@ -77,6 +77,8 @@ dir_open_for_write(const char *pathname, #ifdef HAVE_LIBZ gzFile gzfp = NULL; #endif + mode_t mode = (useumask == 1) ? + (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) : (S_IRUSR | S_IWUSR); snprintf(tmppath, sizeof(tmppath), "%s/%s%s%s", dir_data->basedir, pathname, @@ -89,7 +91,7 @@ dir_open_for_write(const char *pathname, * does not do any system calls to fsync() to make changes permanent on * disk. */ - fd = open(tmppath, O_WRONLY | O_CREAT | PG_BINARY, S_IRUSR | S_IWUSR); + fd = open(tmppath, O_WRONLY | O_CREAT | PG_BINARY, mode); if (fd < 0) return NULL; @@ -525,6 +527,8 @@ tar_open_for_write(const char *pathname, { int save_errno; static char tmppath[MAXPGPATH]; + mode_t mode = (useumask == 1) ? + (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) : (S_IRUSR | S_IWUSR); tar_clear_error(); @@ -534,7 +538,7 @@ tar_open_for_write(const char *pathname, * We open the tar file only when we first try to write to it. */ tar_data->fd = open(tar_data->tarfilename, - O_WRONLY | O_CREAT | PG_BINARY, S_IRUSR | S_IWUSR); + O_WRONLY | O_CREAT | PG_BINARY, mode); if (tar_data->fd < 0) return NULL;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor