Print this page
11506 smatch resync

@@ -45,10 +45,14 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
 
+/*
+ * Copyright 2019 Joyent, Inc.
+ */
+
 #include "ficl.h"
 
 #if FICL_ROBUST >= 2
 #define FICL_VM_CHECK(vm)       \
         FICL_VM_ASSERT(vm, (*(vm->ip - 1)) == vm->runningWord)

@@ -2163,12 +2167,12 @@
 {
         ficlString s;
         char *pad = (char *)vm->pad;
         s = ficlVmGetWord(vm);
 
-        if (FICL_STRING_GET_LENGTH(s) > FICL_PAD_SIZE)
-                FICL_STRING_SET_LENGTH(s, FICL_PAD_SIZE);
+        if (FICL_STRING_GET_LENGTH(s) >= FICL_PAD_SIZE)
+                FICL_STRING_SET_LENGTH(s, FICL_PAD_SIZE - 1);
 
         (void) strncpy(pad, FICL_STRING_GET_POINTER(s),
             FICL_STRING_GET_LENGTH(s));
         pad[FICL_STRING_GET_LENGTH(s)] = '\0';
         return ((int)(FICL_STRING_GET_LENGTH(s)));