* src/pic/device.c (find_device): prevent buffer underflow error
[fw/sdcc] / src / pic / device.c
index 36c0caf0e70a639aae4bf40fece02bf99661c3f4..528cde2767cc51e0f19956b8942a919cecf64504 100644 (file)
@@ -278,10 +278,14 @@ static PIC_device *find_device(char *pic_name)
        /* read line by line */
        pic_buf[sizeof(pic_buf)-1] = '\0';
        while (fgets(pic_buf, sizeof(pic_buf)-1, pic_file) != NULL && !done) {
+               unsigned llen;
+               llen = strlen (pic_buf);
                
                /* remove trailing spaces */
-               while (isspace(pic_buf[strlen(pic_buf)-1]))
-                       pic_buf[strlen(pic_buf)-1] = '\0';
+               while (llen && isspace(pic_buf[llen-1])) {
+                       pic_buf[llen-1] = '\0';
+                       llen--;
+               }
                
                /* remove leading spaces */
                for (pic_buf_pos = pic_buf; isspace(*pic_buf_pos); pic_buf_pos++)