<div dir="ltr"><div dir="ltr"><div>From 8b209620abfbd8147a2c771cb0126dcca528e34f Mon Sep 17 00:00:00 2001</div><div>From: Igor Ostapenko <<a href="mailto:igoreisberg@gmail.com">igoreisberg@gmail.com</a>></div><div>Date: Sat, 18 Dec 2021 04:30:17 +0200</div><div>Subject: erofs-utils: fix consistency + add NUL after root path</div><div><br></div><div>Signed-off-by: Igor Ostapenko <<a href="mailto:igoreisberg@gmail.com">igoreisberg@gmail.com</a>></div><div>---</div><div> fsck/main.c | 2 +-</div><div> lib/dir.c   | 7 ++++---</div><div> 2 files changed, 5 insertions(+), 4 deletions(-)</div><div><br></div><div>diff --git a/fsck/main.c b/fsck/main.c</div><div>index df4845d..30d0a1b 100644</div><div>--- a/fsck/main.c</div><div>+++ b/fsck/main.c</div><div>@@ -400,7 +400,7 @@ static int erofsfsck_check_inode(erofs_nid_t pnid, erofs_nid_t nid)</div><div> <span style="white-space:pre">          </span>goto out;</div><div> </div><div> <span style="white-space:pre">  </span>/* XXXX: the dir depth should be restricted in order to avoid loops */</div><div>-<span style="white-space:pre">       </span>if ((inode.i_mode & S_IFMT) == S_IFDIR) {</div><div>+<span style="white-space:pre">        </span>if (S_ISDIR(inode.i_mode)) {</div><div> <span style="white-space:pre">                </span>struct erofs_dir_context ctx = {</div><div> <span style="white-space:pre">                    </span>.flags = EROFS_READDIR_VALID_PNID,</div><div> <span style="white-space:pre">                  </span>.pnid = pnid,</div><div>diff --git a/lib/dir.c b/lib/dir.c</div><div>index 340dce6..d5b8096 100644</div><div>--- a/lib/dir.c</div><div>+++ b/lib/dir.c</div><div>@@ -127,7 +127,7 @@ int erofs_iterate_dir(struct erofs_dir_context *ctx, bool fsck)</div><div> <span style="white-space:pre">    </span>erofs_off_t pos;</div><div> <span style="white-space:pre">    </span>char buf[EROFS_BLKSIZ];</div><div> </div><div>-<span style="white-space:pre">     </span>if ((dir->i_mode & S_IFMT) != S_IFDIR)</div><div>+<span style="white-space:pre">        </span>if (!S_ISDIR(dir->i_mode))</div><div> <span style="white-space:pre">               </span>return -ENOTDIR;</div><div> </div><div> <span style="white-space:pre">   </span>ctx->flags &= ~EROFS_READDIR_ALL_SPECIAL_FOUND;</div><div>@@ -244,13 +244,14 @@ int erofs_get_pathname(erofs_nid_t nid, char *buf, size_t size)</div><div> <span style="white-space:pre">  </span>};</div><div> </div><div> <span style="white-space:pre"> </span>if (nid == root.nid) {</div><div>-<span style="white-space:pre">               </span>if (size == 0) {</div><div>-<span style="white-space:pre">                     </span>erofs_err("get_pathname buffer not large enough: len 1, size %zd",</div><div>+<span style="white-space:pre">         </span>if (size < 2) {</div><div>+<span style="white-space:pre">                   </span>erofs_err("get_pathname buffer not large enough: len 2, size %zd",</div><div> <span style="white-space:pre">                                </span>  size);</div><div> <span style="white-space:pre">                   </span>return -ENOMEM;</div><div> <span style="white-space:pre">             </span>}</div><div> </div><div> <span style="white-space:pre">          </span>buf[0] = '/';</div><div>+<span style="white-space:pre">                </span>buf[1] = '\0';</div><div> <span style="white-space:pre">              </span>return 0;</div><div> <span style="white-space:pre">   </span>}</div><div> </div><div>-- </div><div>2.30.2</div><div><br></div></div></div>