components/wget/patches/hsts.c.patch
author Cathy Zhou <Cathy.Zhou@Oracle.COM>
Thu, 19 Jan 2017 16:57:09 -0800
changeset 7590 5461fab14904
parent 5309 aa644d83002b
permissions -rw-r--r--
25375056 Guest LDom packets may not flow w/o in-guest network activity (userland part) 25292405 Open vSwitch latency regression
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5309
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     1
flock system call is not available on Solaris but it can be 
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     2
replaced by calling fcntl. This patch will be sent upstream
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     3
after being reworked into a format that will be acceptable.
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     4
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     5
--- wget-1.17.1/src/hsts.c.orig	Tue Jan 12 09:14:54 2016
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     6
+++ wget-1.17.1/src/hsts.c	Tue Jan 12 09:16:55 2016
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     7
@@ -49,6 +49,7 @@
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     8
 #include <string.h>
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
     9
 #include <stdio.h>
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    10
 #include <sys/file.h>
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    11
+#include <fcntl.h>
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    12
 
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    13
 struct hsts_store {
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    14
   struct hash_table *table;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    15
@@ -498,6 +499,7 @@
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    16
   struct_stat st;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    17
   FILE *fp = NULL;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    18
   int fd = 0;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    19
+  struct flock lock_data;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    20
 
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    21
   if (filename && hash_table_count (store->table) > 0)
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    22
     {
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    23
@@ -506,7 +508,11 @@
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    24
         {
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    25
           /* Lock the file to avoid potential race conditions */
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    26
           fd = fileno (fp);
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    27
-          flock (fd, LOCK_EX);
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    28
+          lock_data.l_start = 0;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    29
+          lock_data.l_len = 0;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    30
+          lock_data.l_whence = SEEK_SET;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    31
+          lock_data.l_type = F_WRLCK;
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    32
+          fcntl(fd, F_SETLKW, &lock_data);
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    33
 
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    34
           /* If the file has changed, merge the changes with our in-memory data
aa644d83002b 22294048 Upgrade wget to version 1.17.1
Lukas Rovensky <Lukas.Rovensky@oracle.com>
parents:
diff changeset
    35
              before dumping them to the file.