From cd5bb726f731af7405afed1f24ba105c071d5b29 Mon Sep 17 00:00:00 2001 From: Pyun YongHyeon Date: Mon, 25 Jan 2010 18:35:58 +0000 Subject: [PATCH] shi1_remark is in little endian format, convert it to host ordering. Also remove upper 16bits which always seem to be 0xFFFF. We don't allocate more than 64KB buffer anyway. This change make smbutil work on sparc64. Reviewed by: marius, bp Approved by: bp --- contrib/smbfs/smbutil/view.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/contrib/smbfs/smbutil/view.c b/contrib/smbfs/smbutil/view.c index 87f5e0cc7fc..1af0d9bcea8 100644 --- a/contrib/smbfs/smbutil/view.c +++ b/contrib/smbfs/smbutil/view.c @@ -69,6 +69,7 @@ cmd_view(int argc, char *argv[]) struct smb_ctx sctx, *ctx = &sctx; struct smb_share_info_1 *rpbuf, *ep; char *cp; + u_int32_t remark; u_int16_t type; int error, opt, bufsize, i, entries, total; @@ -117,11 +118,13 @@ cmd_view(int argc, char *argv[]) } for (ep = rpbuf, i = 0; i < entries; i++, ep++) { type = le16toh(ep->shi1_type); + remark = le32toh(ep->shi1_remark); + remark &= 0xFFFF; - cp = (char*)rpbuf + ep->shi1_remark; + cp = (char*)rpbuf + remark; printf("%-12s %-10s %s\n", ep->shi1_netname, shtype[min(type, sizeof shtype / sizeof(char *) - 1)], - ep->shi1_remark ? nls_str_toloc(cp, cp) : ""); + remark ? nls_str_toloc(cp, cp) : ""); } printf("\n%d shares listed from %d available\n", entries, total); free(rpbuf);