logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0007-Don-t-omit-second-operand-to-operator.patch (5218B)


  1. From ee4b85a5edf36b320e521707810cc69f1efad5d2 Mon Sep 17 00:00:00 2001
  2. From: Michael Forney <mforney@mforney.org>
  3. Date: Sun, 16 Jun 2019 12:39:40 -0700
  4. Subject: [PATCH] Don't omit second operand to '?' operator
  5. ---
  6. ip/iproute_lwtunnel.c | 4 ++--
  7. ip/iptunnel.c | 7 ++++++-
  8. lib/bpf_legacy.c | 2 +-
  9. lib/utils.c | 7 +++++--
  10. misc/ss.c | 26 ++++++++++++++++++--------
  11. 5 files changed, 32 insertions(+), 14 deletions(-)
  12. diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c
  13. index 94985972..7f3982aa 100644
  14. --- a/ip/iproute_lwtunnel.c
  15. +++ b/ip/iproute_lwtunnel.c
  16. @@ -394,7 +394,7 @@ static const char *format_action_type(int action)
  17. if (action < 0 || action > SEG6_LOCAL_ACTION_MAX)
  18. return "<invalid>";
  19. - return seg6_action_names[action] ?: "<unknown>";
  20. + return seg6_action_names[action] ? seg6_action_names[action] : "<unknown>";
  21. }
  22. static int read_action_type(const char *name)
  23. @@ -425,7 +425,7 @@ static void print_encap_bpf_prog(FILE *fp, struct rtattr *encap,
  24. if (is_json_context())
  25. print_string(PRINT_JSON, str, NULL,
  26. - progname ? : "<unknown>");
  27. + progname ? progname : "<unknown>");
  28. else {
  29. fprintf(fp, "%s ", str);
  30. if (progname)
  31. diff --git a/ip/iptunnel.c b/ip/iptunnel.c
  32. index 46c5f894..f84e25ed 100644
  33. --- a/ip/iptunnel.c
  34. +++ b/ip/iptunnel.c
  35. @@ -284,11 +284,16 @@ static int do_add(int cmd, int argc, char **argv)
  36. static int do_del(int argc, char **argv)
  37. {
  38. struct ip_tunnel_parm p;
  39. + const char *name;
  40. if (parse_args(argc, argv, SIOCDELTUNNEL, &p) < 0)
  41. return -1;
  42. - return tnl_del_ioctl(tnl_defname(&p) ? : p.name, p.name, &p);
  43. + name = tnl_defname(&p);
  44. + if (!name)
  45. + name = p.name;
  46. +
  47. + return tnl_del_ioctl(name, p.name, &p);
  48. }
  49. static void print_tunnel(const void *t)
  50. diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
  51. index 253e8240..a0afe0bc 100644
  52. --- a/lib/bpf_legacy.c
  53. +++ b/lib/bpf_legacy.c
  54. @@ -771,7 +771,7 @@ static const char *bpf_get_work_dir(enum bpf_prog_type type)
  55. mnt = bpf_find_mntpt("bpf", BPF_FS_MAGIC, bpf_tmp,
  56. sizeof(bpf_tmp), bpf_known_mnts);
  57. if (!mnt) {
  58. - mnt = mnt_env ? : BPF_DIR_MNT;
  59. + mnt = mnt_env ? mnt_env : BPF_DIR_MNT;
  60. ret = bpf_mnt_check_target(mnt);
  61. if (!ret)
  62. ret = bpf_mnt_fs(mnt);
  63. diff --git a/lib/utils.c b/lib/utils.c
  64. index 040b935c..cfe0e2e9 100644
  65. --- a/lib/utils.c
  66. +++ b/lib/utils.c
  67. @@ -953,8 +953,10 @@ int __get_hz(void)
  68. int hz = 0;
  69. FILE *fp;
  70. - if (getenv("HZ"))
  71. - return atoi(getenv("HZ")) ? : HZ;
  72. + if (getenv("HZ")) {
  73. + hz = atoi(getenv("HZ"));
  74. + goto out;
  75. + }
  76. if (getenv("PROC_NET_PSCHED"))
  77. snprintf(name, sizeof(name)-1,
  78. @@ -975,6 +977,7 @@ int __get_hz(void)
  79. hz = denom;
  80. fclose(fp);
  81. }
  82. +out:
  83. if (hz)
  84. return hz;
  85. return HZ;
  86. diff --git a/misc/ss.c b/misc/ss.c
  87. index e5d97d95..3ed6ac18 100644
  88. --- a/misc/ss.c
  89. +++ b/misc/ss.c
  90. @@ -464,7 +464,9 @@ static FILE *generic_proc_open(const char *env, const char *name)
  91. char store[128];
  92. if (!p) {
  93. - p = getenv("PROC_ROOT") ? : "/proc";
  94. + p = getenv("PROC_ROOT");
  95. + if (!p)
  96. + p = "/proc";
  97. snprintf(store, sizeof(store)-1, "%s/%s", p, name);
  98. p = store;
  99. }
  100. @@ -634,12 +636,16 @@ static void user_ent_destroy(void)
  101. static void user_ent_hash_build(void)
  102. {
  103. - const char *root = getenv("PROC_ROOT") ? : "/proc/";
  104. + const char *root;
  105. char name[MAX_PATH_LEN];
  106. struct dirent *d;
  107. int nameoff;
  108. DIR *dir;
  109. + root = getenv("PROC_ROOT");
  110. + if (!root)
  111. + root = "/proc/";
  112. +
  113. strlcpy(name, root, sizeof(name));
  114. if (strlen(name) == 0 || name[strlen(name) - 1] != '/')
  115. @@ -2301,7 +2307,10 @@ void *parse_hostcond(char *addr, bool is_port)
  116. } else if (addr[0] == '*') {
  117. port = addr+1;
  118. } else {
  119. - port = strrchr(strchr(addr, '/') ? : addr, ':');
  120. + port = strchr(addr, '/');
  121. + if (!port)
  122. + port = addr;
  123. + port = strrchr(port, ':');
  124. }
  125. if (is_port)
  126. @@ -4089,9 +4098,9 @@ static void unix_stats_print(struct sockstat *s, struct filter *f)
  127. sock_state_print(s);
  128. - sock_addr_print(s->name ?: "*", " ",
  129. + sock_addr_print(s->name ? s->name : "*", " ",
  130. uint_to_str(s->lport, port_name), NULL);
  131. - sock_addr_print(s->peer_name ?: "*", " ",
  132. + sock_addr_print(s->peer_name ? s->peer_name : "*", " ",
  133. uint_to_str(s->rport, port_name), NULL);
  134. proc_ctx_print(s);
  135. @@ -4294,7 +4303,7 @@ static int unix_show(struct filter *f)
  136. if (!p)
  137. u->peer_name = "?";
  138. else
  139. - u->peer_name = p->name ? : "*";
  140. + u->peer_name = p->name ? p->name : "*";
  141. }
  142. if (f->f) {
  143. @@ -4798,9 +4807,10 @@ static int netlink_show_one(struct filter *f,
  144. strncpy(procname, "kernel", 7);
  145. } else if (pid > 0) {
  146. FILE *fp;
  147. + const char *root = getenv("PROC_ROOT");
  148. snprintf(procname, sizeof(procname), "%s/%d/stat",
  149. - getenv("PROC_ROOT") ? : "/proc", pid);
  150. + root ? root : "/proc", pid);
  151. if ((fp = fopen(procname, "r")) != NULL) {
  152. if (fscanf(fp, "%*d (%[^)])", procname) == 1) {
  153. snprintf(procname+strlen(procname),
  154. @@ -4843,7 +4853,7 @@ static int netlink_show_one(struct filter *f,
  155. else if (pid > 0)
  156. getpidcon(pid, &pid_context);
  157. - out(" proc_ctx=%s", pid_context ? : "unavailable");
  158. + out(" proc_ctx=%s", pid_context ? pid_context : "unavailable");
  159. freecon(pid_context);
  160. }
  161. --
  162. 2.44.0