src/os/solaris/dtrace/libjvm_db.c

changeset 9920
3a3803a0c789
parent 6948
fd94cbe7c5da
child 9931
fd44df5e3bc3
equal deleted inserted replaced
9919:e8a0af9fc1cb 9920:3a3803a0c789
541 klassString = (char*)calloc(klassSymbolLength + 1, 1); 541 klassString = (char*)calloc(klassSymbolLength + 1, 1);
542 err = ps_pread(J->P, klassSymbol + OFFSET_Symbol_body, klassString, klassSymbolLength); 542 err = ps_pread(J->P, klassSymbol + OFFSET_Symbol_body, klassString, klassSymbolLength);
543 CHECK_FAIL(err); 543 CHECK_FAIL(err);
544 544
545 result[0] = '\0'; 545 result[0] = '\0';
546 strncat(result, klassString, size); 546 if (snprintf(result, size,
547 size -= strlen(klassString); 547 "%s.%s%s",
548 strncat(result, ".", size); 548 klassString,
549 size -= 1; 549 nameString,
550 strncat(result, nameString, size); 550 signatureString) >= size) {
551 size -= strlen(nameString); 551 // truncation
552 strncat(result, signatureString, size); 552 goto fail;
553 }
553 554
554 if (nameString != NULL) free(nameString); 555 if (nameString != NULL) free(nameString);
555 if (klassString != NULL) free(klassString); 556 if (klassString != NULL) free(klassString);
556 if (signatureString != NULL) free(signatureString); 557 if (signatureString != NULL) free(signatureString);
557 558
1054 } else { 1055 } else {
1055 err = name_for_methodPtr(J, method, result+1, size-1); 1056 err = name_for_methodPtr(J, method, result+1, size-1);
1056 CHECK_FAIL(err); 1057 CHECK_FAIL(err);
1057 } 1058 }
1058 if (deoptimized) { 1059 if (deoptimized) {
1059 strncat(result + 1, " [deoptimized frame]; ", size-1); 1060 strncat(result, " [deoptimized frame]; ", size - strlen(result) - 1);
1060 } else { 1061 } else {
1061 strncat(result + 1, " [compiled] ", size-1); 1062 strncat(result, " [compiled] ", size - strlen(result) - 1);
1062 } 1063 }
1063 if (debug) 1064 if (debug)
1064 fprintf(stderr, "name_for_nmethod: END: method name: %s, vf_cnt: %d\n\n", 1065 fprintf(stderr, "name_for_nmethod: END: method name: %s, vf_cnt: %d\n\n",
1065 result, N->vf_cnt); 1066 result, N->vf_cnt);
1066 return PS_OK; 1067 return PS_OK;

mercurial