{"record":{"id":"c8a74d8a95c7701e","repo":"DrKLO/Telegram","slug":"merge-parameter-must-be-at-least-1-n","errorCode":null,"errorMessage":"-merge parameter must be at least 1.\\n","messagePattern":"-merge parameter must be at least 1\\.\\\\n","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"TMessagesProj/jni/opus/src/repacketizer_demo.c","lineNumber":81,"sourceCode":"   int len[48];\n   int rng[48];\n   OpusRepacketizer *rp;\n   unsigned char output_packet[MAX_PACKETOUT];\n   int merge = 1, split=0;\n\n   if (argc < 3)\n   {\n      usage(argv[0]);\n      return EXIT_FAILURE;\n   }\n   for (i=1;i<argc-2;i++)\n   {\n      if (strcmp(argv[i], \"-merge\")==0)\n      {\n         merge = atoi(argv[i+1]);\n         if(merge<1)\n         {\n            fprintf(stderr, \"-merge parameter must be at least 1.\\n\");\n            return EXIT_FAILURE;\n         }\n         if(merge>48)\n         {\n            fprintf(stderr, \"-merge parameter must be less than 48.\\n\");\n            return EXIT_FAILURE;\n         }\n         i++;\n      } else if (strcmp(argv[i], \"-split\")==0)\n         split = 1;\n      else\n      {\n         fprintf(stderr, \"Unknown option: %s\\n\", argv[i]);\n         usage(argv[0]);\n         return EXIT_FAILURE;\n      }\n   }\n   fin = fopen(argv[argc-2], \"r\");","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/DrKLO/Telegram/blob/45ab8f4308496e1f01026a97fcdb0d58a5274474/TMessagesProj/jni/opus/src/repacketizer_demo.c#L63-L99","documentation":"The -merge option takes an integer argument specifying how many consecutive Opus packets to concatenate via opus_repacketizer_cat before emitting output. The value is parsed with atoi(), which returns 0 for non-numeric strings. A merge value of 0 or negative is rejected because merging zero packets is meaningless. The parsed value is used directly as nb_packets in the read loop at line 119.","triggerScenarios":"Passing `-merge 0`, `-merge -5`, or `-merge abc` (atoi returns 0). The check at line 79 fires when merge < 1.","commonSituations":"Typo in the numeric argument; passing a variable that expanded to empty; shell quoting that dropped the number leaving the next token as a separate unrecognized option.","solutions":["Pass a positive integer: `-merge 2` or higher (up to 48).","If unsure of the value, omit -merge entirely — it defaults to 1 (line 67)."],"exampleFix":"// before\nrepacketizer_demo -merge 0 in.oct out.oct\n// after\nrepacketizer_demo -merge 2 in.oct out.oct","handlingStrategy":"validation","validationCode":"// Validate merge value before passing to repacketizer logic\nint merge = atoi(arg);\nif (merge < 1) {\n    fprintf(stderr, \"-merge parameter must be at least 1.\\n\");\n    return EXIT_FAILURE;\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate user-supplied integer arguments with strtol and check errno for overflow.","Default to merge=1 when no -merge flag is given (the tool already does this at line 67)."],"tags":["opus","cli","argument-validation","repacketizer"],"backgroundTag":null,"analyzedSha":"45ab8f4308496e1f01026a97fcdb0d58a5274474","analyzedAt":"2026-08-14T05:19:30.815Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}