setup
check_mount || error "mount failed"
mountopt="user_xattr"
- for ((x = 1; x <= PAGE_SIZE/11; x++)); do
+ for ((x = 1; x <= PAGE_SIZE/10; x++)); do
mountopt="$mountopt,user_xattr"
done
- mount_client $MOUNT remount,$mountopt 2>&1 | grep "too long" ||
+ mount.lustre -o remount,$mountopt -v $MGSNID:/$FSNAME $MOUNT 2>&1 |
+ tee $TMP/$tfile.out
+ grep "too long" $TMP/$tfile.out ||
error "Buffer overflow check failed"
+
cleanup || error "cleanup failed"
}
run_test 98 "Buffer-overflow check while parsing mount_opts"
}
return 0;
out_err:
- fprintf(stderr, "error: mount options %s%s too long\n", param, value);
+ /* this 'too long' message is checked in conf-sanity test_98 */
+ fprintf(stderr,
+ "error: add mount options %s%s too long, %zu over limit %zu\n",
+ param, value, strlen(options) + strlen(param) + strlen(value),
+ options_len);
return E2BIG;
}
g_pagesize = sysconf(_SC_PAGESIZE);
if (g_pagesize == -1) {
rc = errno;
- printf("error: %d failed to get page size.\n", rc);
+ printf("error: failed to get page size: %s\n", strerror(rc));
return rc;
}
maxopt_len = MIN(g_pagesize, 64 * 1024);
printf("arg[%d] = %s\n", i, argv[i]);
printf("source = %s (%s), target = %s\n", mop.mo_usource,
mop.mo_source, mop.mo_target);
- printf("options = %s\n", mop.mo_orig_options);
+ printf("options(%zu/%zu) = %s\n", strlen(mop.mo_orig_options),
+ maxopt_len, mop.mo_orig_options);
}
options = malloc(maxopt_len);
}
if (strlen(mop.mo_orig_options) >= maxopt_len) {
- fprintf(stderr, "error: mount options too long\n");
+ /* this 'too long' message is checked in conf-sanity test_98 */
+
+ fprintf(stderr,
+ "error: mount options too long, %zu over limit %zu\n",
+ strlen(mop.mo_orig_options), maxopt_len);
rc = E2BIG;
goto out_options;
}