svn commit: r294364 - in stable/10: contrib/smbfs/lib/smb lib usr.sbin
Ian Lepore
ian at FreeBSD.org
Tue Jan 19 23:36:51 UTC 2016
Author: ian
Date: Tue Jan 19 23:36:49 2016
New Revision: 294364
URL: https://svnweb.freebsd.org/changeset/base/294364
Log:
MFC r292337, r292552, r292553:
Build mount_smbfs for arm. Also sort the subdirs.
Avoid unaligned memory accesses when encoding netbios names in libsmb.
The current code for encoding a netbios name converts each byte to a 16-bit
value and stores the result by casting a char* to u_short*, resulting in
alignment faults on strict-alignment platforms.
This change reimplements the encoding routine using only byte accesses to
memory. There is no particular reason to work with 16-bit values just
because the encoding process creates two bytes of output for every byte of
input. Working a byte at at time also avoids endian problems for big-endian
platforms.
Make the building of libsmb and mount_smbfs unconditional, now that r292552
has eliminated alignment and endian problems that were making it fail on
some platforms.
PR: 180438
PR: 189415
Relnotes: Yes
Modified:
stable/10/contrib/smbfs/lib/smb/nb_name.c
stable/10/lib/Makefile
stable/10/usr.sbin/Makefile
stable/10/usr.sbin/Makefile.amd64
stable/10/usr.sbin/Makefile.arm
stable/10/usr.sbin/Makefile.i386
stable/10/usr.sbin/Makefile.ia64
stable/10/usr.sbin/Makefile.powerpc
stable/10/usr.sbin/Makefile.sparc64
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/contrib/smbfs/lib/smb/nb_name.c
==============================================================================
--- stable/10/contrib/smbfs/lib/smb/nb_name.c Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/contrib/smbfs/lib/smb/nb_name.c Tue Jan 19 23:36:49 2016 (r294364)
@@ -143,15 +143,13 @@ nb_encname_len(const char *str)
return len;
}
-#define NBENCODE(c) (htole16((u_short)(((u_char)(c) >> 4) | \
- (((u_char)(c) & 0xf) << 8)) + 0x4141))
-
-static void
-memsetw(char *dst, int n, u_short word)
+static inline void
+nb_char_encode(u_char **ptr, u_char c, int n)
{
+
while (n--) {
- *(u_short*)dst = word;
- dst += 2;
+ *(*ptr)++ = 0x41 + (c >> 4);
+ *(*ptr)++ = 0x41 + (c & 0x0f);
}
}
@@ -165,19 +163,15 @@ nb_name_encode(struct nb_name *np, u_cha
*cp++ = NB_ENCNAMELEN;
name = np->nn_name;
if (name[0] == '*' && name[1] == 0) {
- *(u_short*)cp = NBENCODE('*');
- memsetw(cp + 2, NB_NAMELEN - 1, NBENCODE(' '));
- cp += NB_ENCNAMELEN;
+ nb_char_encode(&cp, '*', 1);
+ nb_char_encode(&cp, ' ', NB_NAMELEN - 1);
} else {
- for (i = 0; *name && i < NB_NAMELEN - 1; i++, cp += 2, name++)
- *(u_short*)cp = NBENCODE(toupper(*name));
- i = NB_NAMELEN - i - 1;
- if (i > 0) {
- memsetw(cp, i, NBENCODE(' '));
- cp += i * 2;
- }
- *(u_short*)cp = NBENCODE(np->nn_type);
- cp += 2;
+ for (i = 0; i < NB_NAMELEN - 1; i++)
+ if (*name != 0)
+ nb_char_encode(&cp, toupper(*name++), 1);
+ else
+ nb_char_encode(&cp, ' ', 1);
+ nb_char_encode(&cp, np->nn_type, 1);
}
*cp = 0;
if (np->nn_scope == NULL)
Modified: stable/10/lib/Makefile
==============================================================================
--- stable/10/lib/Makefile Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/lib/Makefile Tue Jan 19 23:36:49 2016 (r294364)
@@ -84,7 +84,7 @@ SUBDIR= ${SUBDIR_ORDERED} \
libsbuf \
${_libsdp} \
${_libsm} \
- ${_libsmb} \
+ libsmb \
${_libsmdb} \
${_libsmutil} \
libstand \
@@ -214,7 +214,6 @@ _libypclnt= libypclnt
.endif
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
-_libsmb= libsmb
_libvgl= libvgl
_libproc= libproc
_librtld_db= librtld_db
@@ -228,7 +227,6 @@ _libvmmapi= libvmmapi
.if ${MACHINE_CPUARCH} == "ia64"
_libefi= libefi
-_libsmb= libsmb
.endif
.if ${MACHINE_CPUARCH} == "mips"
@@ -239,11 +237,6 @@ _librtld_db= librtld_db
.if ${MACHINE_CPUARCH} == "powerpc"
_libproc= libproc
_librtld_db= librtld_db
-_libsmb= libsmb
-.endif
-
-.if ${MACHINE_CPUARCH} == "sparc64"
-_libsmb= libsmb
.endif
.if ${MK_OPENSSL} != "no"
Modified: stable/10/usr.sbin/Makefile
==============================================================================
--- stable/10/usr.sbin/Makefile Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/usr.sbin/Makefile Tue Jan 19 23:36:49 2016 (r294364)
@@ -44,6 +44,7 @@ SUBDIR= adduser \
mixer \
mlxcontrol \
mountd \
+ mount_smbfs \
mptutil \
mtest \
${_mtree} \
Modified: stable/10/usr.sbin/Makefile.amd64
==============================================================================
--- stable/10/usr.sbin/Makefile.amd64 Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/usr.sbin/Makefile.amd64 Tue Jan 19 23:36:49 2016 (r294364)
@@ -25,7 +25,6 @@ SUBDIR+= hyperv
.endif
SUBDIR+= kgmon
SUBDIR+= lptcontrol
-SUBDIR+= mount_smbfs
SUBDIR+= mptable
.if ${MK_NDIS} != "no"
SUBDIR+= ndiscvt
Modified: stable/10/usr.sbin/Makefile.arm
==============================================================================
--- stable/10/usr.sbin/Makefile.arm Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/usr.sbin/Makefile.arm Tue Jan 19 23:36:49 2016 (r294364)
@@ -1,4 +1,4 @@
# $FreeBSD$
-SUBDIR+= ofwdump
SUBDIR+= kgmon
+SUBDIR+= ofwdump
Modified: stable/10/usr.sbin/Makefile.i386
==============================================================================
--- stable/10/usr.sbin/Makefile.i386 Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/usr.sbin/Makefile.i386 Tue Jan 19 23:36:49 2016 (r294364)
@@ -15,7 +15,6 @@ SUBDIR+= hyperv
SUBDIR+= kgmon
SUBDIR+= kgzip
SUBDIR+= lptcontrol
-SUBDIR+= mount_smbfs
SUBDIR+= mptable
.if ${MK_NDIS} != "no"
SUBDIR+= ndiscvt
Modified: stable/10/usr.sbin/Makefile.ia64
==============================================================================
--- stable/10/usr.sbin/Makefile.ia64 Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/usr.sbin/Makefile.ia64 Tue Jan 19 23:36:49 2016 (r294364)
@@ -4,6 +4,5 @@
SUBDIR+= acpi
.endif
SUBDIR+= kgmon
-SUBDIR+= mount_smbfs
SUBDIR:= ${SUBDIR:Nuathload}
SUBDIR+= zzz
Modified: stable/10/usr.sbin/Makefile.powerpc
==============================================================================
--- stable/10/usr.sbin/Makefile.powerpc Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/usr.sbin/Makefile.powerpc Tue Jan 19 23:36:49 2016 (r294364)
@@ -1,5 +1,4 @@
# $FreeBSD$
-SUBDIR+= mount_smbfs
SUBDIR+= nvram
SUBDIR+= ofwdump
Modified: stable/10/usr.sbin/Makefile.sparc64
==============================================================================
--- stable/10/usr.sbin/Makefile.sparc64 Tue Jan 19 23:35:12 2016 (r294363)
+++ stable/10/usr.sbin/Makefile.sparc64 Tue Jan 19 23:36:49 2016 (r294364)
@@ -1,5 +1,4 @@
# $FreeBSD$
SUBDIR+= eeprom
-SUBDIR+= mount_smbfs
SUBDIR+= ofwdump
More information about the svn-src-stable
mailing list