are there any buffer overflows in the code
int main(int argc, char **argv) {  
    if (argc != 3) {  
        fprintf(stderr, "Usage: greeting message name\n");  
        return 1;  
    }  
    char greeting[20];  
    char *name = argv[2];  
  
    // Your code goes here  
    strncpy(greeting, argv[1], 20);  
    greeting[19] = '\0';  
    int len = strlen(greeting);  
  
    if (len < 19) {  
      greeting[len++] = ' ';  
      greeting[len]   = '\0';  
    }  
  
    if (len < 19) {  
      strncat(greeting, name, 19 - len);  
    }  
  
    printf("%s\n", greeting);  
    return 0;  
}  