aboutsummaryrefslogtreecommitdiff
path: root/src/lib_buffer.c
diff options
context:
space:
mode:
authorMike Pall <mike>2021-07-19 16:45:26 +0200
committerMike Pall <mike>2021-07-19 16:45:26 +0200
commita689e9dc430613755ae49b0c46cb9ba6c59d0006 (patch)
treedc0fd51dd671ca01d024e00b7f7110d8f0e6f2f1 /src/lib_buffer.c
parent02bcbea8b0f1b30b75460f31fb8749fec55d1e2e (diff)
downloadluajit-a689e9dc430613755ae49b0c46cb9ba6c59d0006.tar.gz
luajit-a689e9dc430613755ae49b0c46cb9ba6c59d0006.tar.bz2
luajit-a689e9dc430613755ae49b0c46cb9ba6c59d0006.zip
String buffers, part 2f: Prevent self-put of buffer.
Sponsored by fmad.io.
Diffstat (limited to 'src/lib_buffer.c')
-rw-r--r--src/lib_buffer.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lib_buffer.c b/src/lib_buffer.c
index f13320c4..cb7531a2 100644
--- a/src/lib_buffer.c
+++ b/src/lib_buffer.c
@@ -126,6 +126,7 @@ LJLIB_CF(buffer_method_put)
126 lj_strfmt_putfnum((SBuf *)sbx, STRFMT_G14, numV(o)); 126 lj_strfmt_putfnum((SBuf *)sbx, STRFMT_G14, numV(o));
127 } else if (tvisbuf(o)) { 127 } else if (tvisbuf(o)) {
128 SBufExt *sbx2 = bufV(o); 128 SBufExt *sbx2 = bufV(o);
129 if (sbx2 == sbx) lj_err_arg(L, arg+1, LJ_ERR_BUFFER_SELF);
129 lj_buf_putmem((SBuf *)sbx, sbx2->r, sbufxlen(sbx2)); 130 lj_buf_putmem((SBuf *)sbx, sbx2->r, sbufxlen(sbx2));
130 } else if (!mo && !tvisnil(mo = lj_meta_lookup(L, o, MM_tostring))) { 131 } else if (!mo && !tvisnil(mo = lj_meta_lookup(L, o, MM_tostring))) {
131 /* Call __tostring metamethod inline. */ 132 /* Call __tostring metamethod inline. */