Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F140032898
D53945.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D53945.id.diff
View Options
diff --git a/lib/libc/gen/getgrent.c b/lib/libc/gen/getgrent.c
--- a/lib/libc/gen/getgrent.c
+++ b/lib/libc/gen/getgrent.c
@@ -347,16 +347,16 @@
memcpy(&p, buffer + sizeof(struct group), sizeof(char *));
if (orig_buf_size + sizeof(struct group) + sizeof(char *) +
- _ALIGN(p) - (size_t)p < buffer_size) {
+ __nss_buf_misalignment(p) < buffer_size) {
*ret_errno = ERANGE;
return (NS_RETURN);
}
orig_buf = (char *)_ALIGN(orig_buf);
memcpy(orig_buf, buffer + sizeof(struct group) + sizeof(char *) +
- _ALIGN(p) - (size_t)p,
+ __nss_buf_misalignment(p),
buffer_size - sizeof(struct group) - sizeof(char *) -
- _ALIGN(p) + (size_t)p);
+ __nss_buf_misalignment(p));
p = (char *)_ALIGN(p);
NS_APPLY_OFFSET(grp->gr_name, orig_buf, p, char *);
diff --git a/lib/libc/include/nscache.h b/lib/libc/include/nscache.h
--- a/lib/libc/include/nscache.h
+++ b/lib/libc/include/nscache.h
@@ -29,6 +29,8 @@
#ifndef __NS_CACHE_H__
#define __NS_CACHE_H__
+#include <sys/_align.h>
+
#include "nscachedcli.h"
typedef int (*nss_cache_id_func_t)(char *, size_t *, va_list, void *);
@@ -178,6 +180,12 @@
} nss_cache_data;
__BEGIN_DECLS
+static inline __ptrdiff_t
+__nss_buf_misalignment(const void *p)
+{
+ return ((char *)_ALIGN(p) - (char *)p);
+}
+
/* dummy function, which is needed to make nss_method_lookup happy */
extern int __nss_cache_handler(void *, void *, va_list);
diff --git a/lib/libc/net/gethostnamadr.c b/lib/libc/net/gethostnamadr.c
--- a/lib/libc/net/gethostnamadr.c
+++ b/lib/libc/net/gethostnamadr.c
@@ -402,9 +402,9 @@
orig_buf = (char *)_ALIGN(orig_buf);
memcpy(orig_buf, buffer + sizeof(struct hostent) + sizeof(char *) +
- _ALIGN(p) - (size_t)p,
+ __nss_buf_misalignment(p),
buffer_size - sizeof(struct hostent) - sizeof(char *) -
- _ALIGN(p) + (size_t)p);
+ __nss_buf_misalignment(p));
p = (char *)_ALIGN(p);
NS_APPLY_OFFSET(ht->h_name, orig_buf, p, char *);
diff --git a/lib/libc/net/getnetnamadr.c b/lib/libc/net/getnetnamadr.c
--- a/lib/libc/net/getnetnamadr.c
+++ b/lib/libc/net/getnetnamadr.c
@@ -249,9 +249,9 @@
orig_buf = (char *)_ALIGN(orig_buf);
memcpy(orig_buf, buffer + sizeof(struct netent) + sizeof(char *) +
- _ALIGN(p) - (size_t)p,
+ __nss_buf_misalignment(p),
buffer_size - sizeof(struct netent) - sizeof(char *) -
- _ALIGN(p) + (size_t)p);
+ __nss_buf_misalignment(p));
p = (char *)_ALIGN(p);
NS_APPLY_OFFSET(ne->n_name, orig_buf, p, char *);
diff --git a/lib/libc/net/getprotoent.c b/lib/libc/net/getprotoent.c
--- a/lib/libc/net/getprotoent.c
+++ b/lib/libc/net/getprotoent.c
@@ -265,9 +265,9 @@
orig_buf = (char *)_ALIGN(orig_buf);
memcpy(orig_buf, buffer + sizeof(struct protoent) + sizeof(char *) +
- _ALIGN(p) - (size_t)p,
+ __nss_buf_misalignment(p),
buffer_size - sizeof(struct protoent) - sizeof(char *) -
- _ALIGN(p) + (size_t)p);
+ __nss_buf_misalignment(p));
p = (char *)_ALIGN(p);
NS_APPLY_OFFSET(proto->p_name, orig_buf, p, char *);
diff --git a/lib/libc/net/getservent.c b/lib/libc/net/getservent.c
--- a/lib/libc/net/getservent.c
+++ b/lib/libc/net/getservent.c
@@ -1084,9 +1084,9 @@
orig_buf = (char *)_ALIGN(orig_buf);
memcpy(orig_buf, buffer + sizeof(struct servent) + sizeof(char *) +
- (_ALIGN(p) - (size_t)p),
+ __nss_buf_misalignment(p),
buffer_size - sizeof(struct servent) - sizeof(char *) -
- (_ALIGN(p) - (size_t)p));
+ __nss_buf_misalignment(p));
p = (char *)_ALIGN(p);
NS_APPLY_OFFSET(serv->s_name, orig_buf, p, char *);
diff --git a/lib/libc/rpc/getrpcent.c b/lib/libc/rpc/getrpcent.c
--- a/lib/libc/rpc/getrpcent.c
+++ b/lib/libc/rpc/getrpcent.c
@@ -778,9 +778,9 @@
orig_buf = (char *)_ALIGN(orig_buf);
memcpy(orig_buf, buffer + sizeof(struct rpcent) + sizeof(char *) +
- _ALIGN(p) - (size_t)p,
+ __nss_buf_misalignment(p),
buffer_size - sizeof(struct rpcent) - sizeof(char *) -
- _ALIGN(p) + (size_t)p);
+ __nss_buf_misalignment(p));
p = (char *)_ALIGN(p);
NS_APPLY_OFFSET(rpc->r_name, orig_buf, p, char *);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Dec 20, 8:03 AM (14 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27093675
Default Alt Text
D53945.id.diff (4 KB)
Attached To
Mode
D53945: get*ent: be consistant about _ALIGN(p) - p
Attached
Detach File
Event Timeline
Log In to Comment