chiark / gitweb /
ncmpcpp: Update from 0.8.1 to 0.8.2
[termux-packages] / packages / git / config.c.patch
1 diff -u -r ../git-2.16.0/config.c ./config.c
2 --- ../git-2.16.0/config.c      2018-01-17 22:49:47.000000000 +0000
3 +++ ./config.c  2018-01-20 21:49:42.940523576 +0000
4 @@ -73,6 +73,25 @@
5  static int pack_compression_seen;
6  static int zlib_compression_seen;
7  
8 +/*
9 + * Protecting the project-specific git configuration file (.git/config) is
10 + * not possible on a shared file system on Android, which on an unpatched
11 + * git causes operations such as clone to fail with an error message.
12 + *
13 + * For the Termux git package we introduce a warning about the configuration
14 + * file being unprotected, but proceed in order to allow git repositories
15 + * to be cloned to shared storage accessible to other apps.
16 + */
17 +static void termux_warn_once_about_lockfile()
18 +{
19 +       static int already_warned;
20 +       if (!already_warned) {
21 +               warning("Cannot protect .git/config on this file system"
22 +                               " - do not store sensitive information here.");
23 +               already_warned = 1;
24 +       }
25 +}
26 +
27  static int config_file_fgetc(struct config_source *conf)
28  {
29         return getc_unlocked(conf->u.file);
30 @@ -2608,9 +2627,13 @@
31                 in_fd = -1;
32  
33                 if (chmod(get_lock_file_path(&lock), st.st_mode & 07777) < 0) {
34 +#ifdef __ANDROID__
35 +                       termux_warn_once_about_lockfile();
36 +#else
37                         error_errno("chmod on %s failed", get_lock_file_path(&lock));
38                         ret = CONFIG_NO_WRITE;
39                         goto out_free;
40 +#endif
41                 }
42  
43                 if (store.seen == 0)
44 @@ -2810,9 +2833,13 @@
45         }
46  
47         if (chmod(get_lock_file_path(&lock), st.st_mode & 07777) < 0) {
48 +#ifdef __ANDROID__
49 +               termux_warn_once_about_lockfile();
50 +#else
51                 ret = error_errno("chmod on %s failed",
52                                   get_lock_file_path(&lock));
53                 goto out;
54 +#endif
55         }
56  
57         while (fgets(buf, sizeof(buf), config_file)) {