about summary refs log tree commit diff
path: root/nscd/nscd-client.h
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2014-04-30 11:57:09 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2014-04-30 11:57:09 +0530
commit1cdeb2372ddecac0dfe0c132a033e9590ffa07d2 (patch)
treee0265a463391655f3b8fa068b1578ec5e2d11ad0 /nscd/nscd-client.h
parent16b293a7a6f65d8ff348a603d19e8fd4372fa3a9 (diff)
downloadglibc-1cdeb2372ddecac0dfe0c132a033e9590ffa07d2.tar.gz
glibc-1cdeb2372ddecac0dfe0c132a033e9590ffa07d2.tar.xz
glibc-1cdeb2372ddecac0dfe0c132a033e9590ffa07d2.zip
Consolidate code to initialize nscd dataset header
This patch consolidates the code to initialize the header of a dataset
into a single set of functions (one for positive and another for
negative datasets) primarily to reduce repetition of code.  The
secondary reason is to simplify Patch 2/2 which fixes the problem of
an uninitialized byte in the header by initializing an unused field in
the structure and hence preventing a possible data leak into the cache
file.
Diffstat (limited to 'nscd/nscd-client.h')
-rw-r--r--nscd/nscd-client.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h
index 98f77e7901..c069bf6810 100644
--- a/nscd/nscd-client.h
+++ b/nscd/nscd-client.h
@@ -236,6 +236,36 @@ struct datahead
   } data[0];
 };
 
+static inline time_t
+datahead_init_common (struct datahead *head, nscd_ssize_t allocsize,
+		      nscd_ssize_t recsize, uint32_t ttl)
+{
+  head->allocsize = allocsize;
+  head->recsize = recsize;
+  head->usable = true;
+
+  head->ttl = ttl;
+  /* Compute the timeout time.  */
+  return head->timeout = time (NULL) + ttl;
+}
+
+static inline time_t
+datahead_init_pos (struct datahead *head, nscd_ssize_t allocsize,
+		   nscd_ssize_t recsize, uint8_t nreloads, uint32_t ttl)
+{
+  head->notfound = false;
+  head->nreloads = nreloads;
+  return datahead_init_common (head, allocsize, recsize, ttl);
+}
+
+static inline time_t
+datahead_init_neg (struct datahead *head, nscd_ssize_t allocsize,
+		   nscd_ssize_t recsize, uint32_t ttl)
+{
+  head->notfound = true;
+  head->nreloads = 0;
+  return datahead_init_common (head, allocsize, recsize, ttl);
+}
 
 /* Structure for one hash table entry.  */
 struct hashentry