aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/net/dns.el
diff options
context:
space:
mode:
authorPaul Eggert2018-08-21 13:44:03 -0700
committerPaul Eggert2018-08-21 13:44:32 -0700
commitf18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd (patch)
tree5f42e48e12a0ec77bd5cd5f32255a534635e89bf /lisp/net/dns.el
parent81e7eef8224c8a99a207b7a7b9dae1d598392ef7 (diff)
downloademacs-f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd.tar.gz
emacs-f18af6cd5cb7dbbf7420ec2d3efed4e202c4f0dd.zip
Audit use of lsh and fix glitches
I audited use of lsh in the Lisp source code, and fixed the glitches that I found. While I was at it, I replaced uses of lsh with ash when either will do. Replacement is OK when either argument is known to be nonnegative, or when only the low-order bits of the result matter, and is a (minor) win since ash is a bit more solid than lsh nowadays, and is a bit faster. * lisp/calc/calc-ext.el (math-check-fixnum): Prefer most-positive-fixnum to (lsh -1 -1). * lisp/vc/vc-hg.el (vc-hg-state-fast): When testing fixnum width, prefer (zerop (ash most-positive-fixnum -32)) to (zerop (lsh -1 32)) (Bug#32485#11). * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode): Tighten sanity-check for bytecode overflow, by checking that the result of (ash pc -8) is nonnegative. Formerly this check was not needed since lsh was used and the number overflowed differently. * lisp/net/dns.el (dns-write): Fix some obvious sign typos in shift counts. Evidently this part of the code has never been exercised. * lisp/progmodes/hideif.el (hif-shiftleft, hif-shiftright): * lisp/term/common-win.el (x-setup-function-keys): Simplify. * admin/unidata/unidata-gen.el, admin/unidata/uvs.el: * doc/lispref/keymaps.texi, doc/lispref/syntax.texi: * doc/misc/calc.texi, doc/misc/cl.texi, etc/NEWS.19: * lisp/arc-mode.el, lisp/calc/calc-bin.el, lisp/calc/calc-comb.el: * lisp/calc/calc-ext.el, lisp/calc/calc-math.el: * lisp/cedet/semantic/wisent/comp.el, lisp/composite.el: * lisp/disp-table.el, lisp/dos-fns.el, lisp/edmacro.el: * lisp/emacs-lisp/bindat.el, lisp/emacs-lisp/byte-opt.el: * lisp/emacs-lisp/bytecomp.el, lisp/emacs-lisp/cl-extra.el: * lisp/erc/erc-dcc.el, lisp/facemenu.el, lisp/gnus/message.el: * lisp/gnus/nndoc.el, lisp/gnus/nnmaildir.el, lisp/image.el: * lisp/international/ccl.el, lisp/international/fontset.el: * lisp/international/mule-cmds.el, lisp/international/mule.el: * lisp/json.el, lisp/mail/binhex.el, lisp/mail/rmail.el: * lisp/mail/uudecode.el, lisp/md4.el, lisp/net/dns.el: * lisp/net/ntlm.el, lisp/net/sasl.el, lisp/net/socks.el: * lisp/net/tramp.el, lisp/obsolete/levents.el: * lisp/obsolete/pgg-parse.el, lisp/org/org.el: * lisp/org/ox-publish.el, lisp/progmodes/cc-defs.el: * lisp/progmodes/ebnf2ps.el, lisp/progmodes/hideif.el: * lisp/ps-bdf.el, lisp/ps-print.el, lisp/simple.el: * lisp/tar-mode.el, lisp/term/common-win.el: * lisp/term/tty-colors.el, lisp/term/xterm.el, lisp/vc/vc-git.el: * lisp/vc/vc-hg.el, lisp/x-dnd.el, test/src/data-tests.el: Prefer ash to lsh when either will do.
Diffstat (limited to 'lisp/net/dns.el')
-rw-r--r--lisp/net/dns.el24
1 files changed, 12 insertions, 12 deletions
diff --git a/lisp/net/dns.el b/lisp/net/dns.el
index 057ae3219ee..b3b430d2ba8 100644
--- a/lisp/net/dns.el
+++ b/lisp/net/dns.el
@@ -117,7 +117,7 @@ updated. Set this variable to t to disable the check.")
117 length) 117 length)
118 (while (not ended) 118 (while (not ended)
119 (setq length (dns-read-bytes 1)) 119 (setq length (dns-read-bytes 1))
120 (if (= 192 (logand length (lsh 3 6))) 120 (if (= 192 (logand length (ash 3 6)))
121 (let ((offset (+ (* (logand 63 length) 256) 121 (let ((offset (+ (* (logand 63 length) 256)
122 (dns-read-bytes 1)))) 122 (dns-read-bytes 1))))
123 (save-excursion 123 (save-excursion
@@ -144,17 +144,17 @@ If TCP-P, the first two bytes of the package with be the length field."
144 (dns-write-bytes (dns-get 'id spec) 2) 144 (dns-write-bytes (dns-get 'id spec) 2)
145 (dns-write-bytes 145 (dns-write-bytes
146 (logior 146 (logior
147 (lsh (if (dns-get 'response-p spec) 1 0) -7) 147 (ash (if (dns-get 'response-p spec) 1 0) 7)
148 (lsh 148 (ash
149 (cond 149 (cond
150 ((eq (dns-get 'opcode spec) 'query) 0) 150 ((eq (dns-get 'opcode spec) 'query) 0)
151 ((eq (dns-get 'opcode spec) 'inverse-query) 1) 151 ((eq (dns-get 'opcode spec) 'inverse-query) 1)
152 ((eq (dns-get 'opcode spec) 'status) 2) 152 ((eq (dns-get 'opcode spec) 'status) 2)
153 (t (error "No such opcode: %s" (dns-get 'opcode spec)))) 153 (t (error "No such opcode: %s" (dns-get 'opcode spec))))
154 -3) 154 3)
155 (lsh (if (dns-get 'authoritative-p spec) 1 0) -2) 155 (ash (if (dns-get 'authoritative-p spec) 1 0) 2)
156 (lsh (if (dns-get 'truncated-p spec) 1 0) -1) 156 (ash (if (dns-get 'truncated-p spec) 1 0) 1)
157 (lsh (if (dns-get 'recursion-desired-p spec) 1 0) 0))) 157 (ash (if (dns-get 'recursion-desired-p spec) 1 0) 0)))
158 (dns-write-bytes 158 (dns-write-bytes
159 (cond 159 (cond
160 ((eq (dns-get 'response-code spec) 'no-error) 0) 160 ((eq (dns-get 'response-code spec) 'no-error) 0)
@@ -198,20 +198,20 @@ If TCP-P, the first two bytes of the package with be the length field."
198 (goto-char (point-min)) 198 (goto-char (point-min))
199 (push (list 'id (dns-read-bytes 2)) spec) 199 (push (list 'id (dns-read-bytes 2)) spec)
200 (let ((byte (dns-read-bytes 1))) 200 (let ((byte (dns-read-bytes 1)))
201 (push (list 'response-p (if (zerop (logand byte (lsh 1 7))) nil t)) 201 (push (list 'response-p (if (zerop (logand byte (ash 1 7))) nil t))
202 spec) 202 spec)
203 (let ((opcode (logand byte (lsh 7 3)))) 203 (let ((opcode (logand byte (ash 7 3))))
204 (push (list 'opcode 204 (push (list 'opcode
205 (cond ((eq opcode 0) 'query) 205 (cond ((eq opcode 0) 'query)
206 ((eq opcode 1) 'inverse-query) 206 ((eq opcode 1) 'inverse-query)
207 ((eq opcode 2) 'status))) 207 ((eq opcode 2) 'status)))
208 spec)) 208 spec))
209 (push (list 'authoritative-p (if (zerop (logand byte (lsh 1 2))) 209 (push (list 'authoritative-p (if (zerop (logand byte (ash 1 2)))
210 nil t)) spec) 210 nil t)) spec)
211 (push (list 'truncated-p (if (zerop (logand byte (lsh 1 2))) nil t)) 211 (push (list 'truncated-p (if (zerop (logand byte (ash 1 2))) nil t))
212 spec) 212 spec)
213 (push (list 'recursion-desired-p 213 (push (list 'recursion-desired-p
214 (if (zerop (logand byte (lsh 1 0))) nil t)) spec)) 214 (if (zerop (logand byte (ash 1 0))) nil t)) spec))
215 (let ((rc (logand (dns-read-bytes 1) 15))) 215 (let ((rc (logand (dns-read-bytes 1) 15)))
216 (push (list 'response-code 216 (push (list 'response-code
217 (cond 217 (cond