Fixed the segmentation fault in dotnettool (#437)
[platform/core/dotnet/launcher.git] / NativeLauncher / tool / dotnettool.cc
index 7844988..4343b49 100644 (file)
@@ -74,7 +74,7 @@ void DisplayUsage() {
                "       --skip-ro-app             - Skip re-generate NI for apps installed RO area\n"
                "                                   (This option works with --ni-regen-all-app only)\n"
                "       --rm-origin-after-ni      - Remove original dll after creating native image\n"
-               "                                   Note!: --ni-pkg option doesnot support --rm-origin-after-ni option.\n"
+               "                                   Note!: App ATOC options(--ni-pkg, --ni-regen-all-app, --tac-regen-all) cannot be used with --rm-origin-after-ni option.\n"
                "                                   (Use only for assemblies that will not be AOTed again afterward.)"
                "\n"
                "Usage: dotnettool [options] [command] [arguments]\n"
@@ -188,6 +188,12 @@ int main(int argc, char* argv[])
                }
        }
 
+       if (args.size() == 0) {
+               _SERR("The command is missing");
+               DisplayUsage();
+               return -1;
+       }
+
        if (opt->flags & NI_FLAGS_INPUT_BUBBLE_REF && !(opt->flags & NI_FLAGS_INPUT_BUBBLE)) {
                _SERR("--inputbubbleref option should be used with --inputbubble option");
                DisplayUsage();
@@ -242,7 +248,7 @@ int main(int argc, char* argv[])
        //sh-3.2# dotnettool --ni-pkg [pkgId] [pkgId] ...
        else if (cmd == "--ni-pkg") {
                if (opt->flags & NI_FLAGS_RM_ORIGIN_AFTER_NI) {
-                       _SERR("--ni-pkg option doesnot support --rm-origin-after-ni option");
+                       _SERR("App AOTC options cannot be used with --rm-origin-after-ni option");
                        DisplayUsage();
                        return -1;
                }
@@ -309,6 +315,12 @@ int main(int argc, char* argv[])
        }
        //sh-3.2# dotnettool --ni-regen-all-app
        else if (cmd == "--ni-regen-all-app") {
+               if (opt->flags & NI_FLAGS_RM_ORIGIN_AFTER_NI) {
+                       _SERR("App AOTC options cannot be used with --rm-origin-after-ni option");
+                       DisplayUsage();
+                       return -1;
+               }
+
                int ret = regenerateAppNI(opt);
                if (ret != NI_ERROR_NONE) {
                        _SERR("Failed to regenerate all app NI");
@@ -316,6 +328,12 @@ int main(int argc, char* argv[])
        }
        //sh-3.2# dotnettool --tac-regen-all
        else if (cmd == "--tac-regen-all") {
+               if (opt->flags & NI_FLAGS_RM_ORIGIN_AFTER_NI) {
+                       _SERR("App AOTC options cannot be used with --rm-origin-after-ni option");
+                       DisplayUsage();
+                       return -1;
+               }
+
                int ret = regenerateTACNI(opt);
                if (ret != NI_ERROR_NONE) {
                        _SERR("Failed to regenerate all TAC");