Replace strtok in systemd-sonic-generator (#11710)

Signed-off-by: maipbui <maibui@microsoft.com>

<!--
     Please make sure you've read and understood our contributing guidelines:
     https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

     ** Make sure all your commits include a signature generated with `git commit -s` **

     If this is a bug fix, make sure your description includes "fixes #xxxx", or
     "closes #xxxx" or "resolves #xxxx"

     Please provide the following information:
-->

#### Why I did it
Replace unsafe functions to safe functions
#### How I did it
Replace `strtok()` by `strtok_r()`
#### How to verify it

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [ ] 201811
- [ ] 201911
- [ ] 202006
- [ ] 202012
- [ ] 202106
- [ ] 202111
- [ ] 202205

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/sonic-buildimage/blob/master/src/sonic-yang-models/doc/Configuration.md
-->

#### A picture of a cute animal (not mandatory but encouraged)
This commit is contained in:
Mai Bui 2022-08-17 17:30:58 -04:00 committed by GitHub
parent 535612f808
commit 5d9a463695
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -121,6 +121,7 @@ static int get_install_targets_from_line(char* target_string, char* install_type
***/
char* token;
char* target;
char* saveptr;
char final_target[PATH_MAX];
int num_targets = 0;
@ -135,8 +136,8 @@ static int get_install_targets_from_line(char* target_string, char* install_type
strip_trailing_newline(target);
if (strstr(target, "%") != NULL) {
char* prefix = strtok(target, ".");
char* suffix = strtok(NULL, ".");
char* prefix = strtok_r(target, ".", &saveptr);
char* suffix = strtok_r(NULL, ".", &saveptr);
int prefix_len = strlen(prefix);
strncpy(final_target, prefix, prefix_len - 2);
@ -516,6 +517,7 @@ int get_num_of_asic() {
char *line = NULL;
char* token;
char* platform;
char* saveptr;
size_t len = 0;
ssize_t nread;
bool ans;
@ -534,8 +536,8 @@ int get_num_of_asic() {
while ((nread = getline(&line, &len, fp)) != -1) {
if ((strstr(line, "onie_platform") != NULL) ||
(strstr(line, "aboot_platform") != NULL)) {
token = strtok(line, "=");
platform = strtok(NULL, "=");
token = strtok_r(line, "=", &saveptr);
platform = strtok_r(NULL, "=", &saveptr);
strip_trailing_newline(platform);
break;
}
@ -547,8 +549,8 @@ int get_num_of_asic() {
if (fp != NULL) {
while ((nread = getline(&line, &len, fp)) != -1) {
if (strstr(line, "NUM_ASIC") != NULL) {
token = strtok(line, "=");
str_num_asic = strtok(NULL, "=");
token = strtok_r(line, "=", &saveptr);
str_num_asic = strtok_r(NULL, "=", &saveptr);
strip_trailing_newline(str_num_asic);
if (str_num_asic != NULL){
sscanf(str_num_asic, "%d",&num_asic);
@ -571,6 +573,7 @@ int ssg_main(int argc, char **argv) {
char* unit_instance;
char* prefix;
char* suffix;
char* saveptr;
int num_unit_files;
int num_targets;
int r;
@ -589,8 +592,8 @@ int ssg_main(int argc, char **argv) {
for (int i = 0; i < num_unit_files; i++) {
unit_instance = strdup(unit_files[i]);
if ((num_asics == 1) && strstr(unit_instance, "@") != NULL) {
prefix = strtok(unit_instance, "@");
suffix = strtok(NULL, "@");
prefix = strtok_r(unit_instance, "@", &saveptr);
suffix = strtok_r(NULL, "@", &saveptr);
strcpy(unit_instance, prefix);
strcat(unit_instance, suffix);